Ответ
 
Опции темы
Старый 05.01.2013, 11:49   #781 (permalink)
::: __,,,^._.^,,,__ :::
 
Аватар для ale002
 
Регистрация: 28.02.2010
Сообщений: 1,246
Репутация: 2528
ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002
Сказал(а) спасибо: 794
Поблагодарили 2,502 раз(а) в 770 сообщениях
Поинты: 670
Сообщение от Алекc1234 Посмотреть сообщение
сов вообще не ведёт расчёты...
Такого не бывает, до какого-то условия он обязательно доходит. Вам надо определить в чём затык - поставьте в коде метки Print("тарарам") в ключевых местах. Так выясните которое условие не выполняется, тада станет понятно с чем конкретно бороться надо

Если у вас 2 ордера на этой свече, а нужен первый из них, знач искать надо предпоследний?
ale002 вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (05.01.2013), Алекc1234 (05.01.2013)
Старый 05.01.2013, 11:53   #782 (permalink)
Местный житель
 
Аватар для Алекc1234
 
Регистрация: 24.03.2011
Сообщений: 697
Репутация: 276
Алекc1234 Алекc1234 Алекc1234
Сказал(а) спасибо: 391
Поблагодарили 276 раз(а) в 176 сообщениях
Поинты: 0
Сообщение от ale002 Посмотреть сообщение
Такого не бывает, до какого-то условия он обязательно доходит. Вам надо определить в чём затык - поставьте в коде метки Print("тарарам") в ключевых местах. Так выясните которое условие не выполняется, тада станет понятно с чем конкретно бороться надо

Если у вас 2 ордера на этой свече, а нужен первый из них, знач искать надо предпоследний?
Да, выходит, что предпоследний
Алекc1234 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 06.01.2013, 22:22   #783 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от Алекc1234 Посмотреть сообщение
Да, выходит, что предпоследний

По ходу предпоследний ордер выбирается так:

PHP код:
OrderSelect(OrdersHistoryTotal()-1SELECT_BY_POSMODE_HISTORY);
int ticket OrderTicket();                  // тикет предпоследнего ордера
int beforeLastOOP OrderOpenPrice();        // цена открытия предпоследнего ордера
int beforeLastOOT OrderOpenTime();         // время открытия предпоследнего ордера 
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Алекc1234 (07.01.2013)
Старый 06.01.2013, 22:41   #784 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Возник вопрос. С массивами я уже сталкивался, как объявлять, задавать и вызывать значения элементов прекрасно понимаю, НО вот попался код, я начал его анализировать и у меня реально мозг начал закипать. Щяс я кратко напишу что где имеется по теме, дабы не вылаживать весь код и не трепать нервы окружающим

Массивы объявлены на глобальном уровне:

PHP код:
int g_maPeriod[4] = {625150250},             // Периоды обрабатываемых МА
   
g_maPeriod[4] = {1234};                    // Признаки МАшек, добавляемые в Magic
                                                   // ..Number ордера к основному Magic 

Это у нас в start:

PHP код:
   int signal[4];
   
CalcSignals(signal); 

По сути массивами являются как g_maPeriod[4], [B]g_maPeriod[4][/ B], так и signal[4] с одной лишь разницей, что последний объявлен не явно. Идём дальше.. Меня интересует то факт, как их вызывают и возвращают функции данного эксперта.

Вот тут массив в формальных параметрах объявлен как массив int& signal[]:

PHP код:
//+-------------------------------------------------------------------------------------+
//| Открытие позиций                                                                    |
//+-------------------------------------------------------------------------------------+
bool Trade(intsignal[])
{
   for (
int i 04i++)
   {   
      if (
signal[i] == SIGNAL_BUY && FindOrders(g_signMA[i]) == 0)
         if (!
OpenBuy(g_signMA[i]))
            return (
false);

      if (
signal[i] == SIGNAL_SELL && FindOrders(g_signMA[i]) == 0)
         if (!
OpenSell(g_signMA[i]))
            return (
false);
   }
 
   return (
true);

А вот в этих функциях в формальных параметрах уже объявлена переменная int sing:

PHP код:
//+-------------------------------------------------------------------------------------+
//| Открытие длинных позиций                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy(int sign)
{
   
int ticket = -1;
   
string myNote "Сов баянул";

   
ticket OrderSend(Symbol(), OP_BUY0.1Aski_slippage00myNote
                     
i_myMagic sign0Blue);

   return (
ticket && 
           
OrderSelect(ticketSELECT_BY_TICKET));
}
//+-------------------------------------------------------------------------------------+
//| Открытие коротких позиций                                                           |
//+-------------------------------------------------------------------------------------+
bool OpenSell(int sign)
{
   
int ticket = -1;
   
string myNote "Сов шортанул";

   
ticket OrderSend(Symbol(), OP_BUY0.1Bidi_slippage00myNote
                     
i_myMagic sign0Red);
 
   return (
ticket && 
           
OrderSelect(ticketSELECT_BY_TICKET));


Хотя вызываются они опять же в вышеприведённой функции bool Trade() c массивом в параметрах. Почему так? Как это можно понимать? В учебнике я по этому поводу ничего адекватного вообще не нашёл.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 07.01.2013, 06:06   #785 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547

По умолчанию Вопрос мастерам MQL4???


как написать примерно кусок кода, по такой логике?
есть 1 сигнал(1 переменная)X
есть 2 сигнал,(2 переменная) Y
есть 3 переменная B (баланс), величину переменной можно менять программно или в настройках, как написать логику работы такого "сумматора"(интегратора) чтобы в одном крайнем положении переменной В, на выходе сумматора был лишь 1 сигнал, в другом крайнем положении переменной В, на выходе сумматора был только сигнал 2, в среднем положении переменной В оба сигнала 1 и 2 были на выходе сумматора,диапазон переменной В от -100 до +100%, в среднем положении 0% -оба должны присутствовать, вы пользовались балансом на усилителе? тут та же логика.разница в том что тут не уровни напряжений , а логические сигналы 1 и 2
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 07.01.2013, 08:24   #786 (permalink)
::: __,,,^._.^,,,__ :::
 
Аватар для ale002
 
Регистрация: 28.02.2010
Сообщений: 1,246
Репутация: 2528
ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002
Сказал(а) спасибо: 794
Поблагодарили 2,502 раз(а) в 770 сообщениях
Поинты: 670
Сообщение от Milord Посмотреть сообщение
как написать примерно кусок кода, по такой логике?
Не совсем чёткие условия - от -100 до +100 есть как минимум 200 позиций, а не 3. Округлять? Переменные логические или численные? Yb't вариант кода при 2х ответах "да". И есчо - "сумматор" суммирует, а вам кажетсо надо аннулировать 1 из двух. Или таки складывать?

PHP код:
// внешняя переменная:
extern int Баланс 75// баланс - целое число от -100 до 100

// ...

// локальные переменные сигналов в теле программы:
bool Сигнал_АСигнал_Б;

Сигнал_А true;
Сигнал_Б true;

// вызов функции контроля по внешней переменной:
Сигналоподавитель(Сигнал_АСигнал_ББаланс);

// ...

// функция контроля:
void Сигналоподавитель(boolbСигнал_АboolbСигнал_Бint iБаланс) {
    
// Баланс ближе к 100%, сигнал А аннулируется:
    
if(iБаланс 50) {bСигнал_А false; return;}
    
// Баланс ближе к -100%, сигнал Б аннулируется:
    
if(iБаланс < -50) {bСигнал_Б false; return;}
    
// Баланс ближе к 0, оба остаются в силе:
    
return;

ale002 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 07.01.2013, 20:38   #787 (permalink)
Местный житель
 
Аватар для Актёр Актёр
 
Регистрация: 26.11.2012
Сообщений: 283
Репутация: 231
Актёр Актёр - Актёр Актёр - Актёр Актёр -
Сказал(а) спасибо: 281
Поблагодарили 230 раз(а) в 91 сообщениях
Поинты: 130
Подскажите как увелить толщину линий индикатора TMA, что нужо прописать в коде??? Желательно чтобы линии были как фон, т.е чтоб цену видно было. Индюк на всякий случай прикрепляю.
Вложения:
Тип файла: mq4 TMA.mq4 (8.4 Кб, 5 просмотров)
Актёр Актёр вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 07.01.2013, 21:09   #788 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9022
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,680
Поблагодарили 9,022 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от Актёр Актёр Посмотреть сообщение
Подскажите как увелить толщину линий индикатора TMA, что нужо прописать в коде??? Желательно чтобы линии были как фон, т.е чтоб цену видно было. Индюк на всякий случай прикрепляю.
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Актёр Актёр (07.01.2013)
Старый 07.01.2013, 21:11   #789 (permalink)
Местный житель
 
Аватар для Актёр Актёр
 
Регистрация: 26.11.2012
Сообщений: 283
Репутация: 231
Актёр Актёр - Актёр Актёр - Актёр Актёр -
Сказал(а) спасибо: 281
Поблагодарили 230 раз(а) в 91 сообщениях
Поинты: 130
Сообщение от eevviill Посмотреть сообщение
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
Спасибо огромное, а прозрачность как сделать ???=)
Актёр Актёр вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 07.01.2013, 21:23   #790 (permalink)
Местный житель
 
Аватар для Актёр Актёр
 
Регистрация: 26.11.2012
Сообщений: 283
Репутация: 231
Актёр Актёр - Актёр Актёр - Актёр Актёр -
Сказал(а) спасибо: 281
Поблагодарили 230 раз(а) в 91 сообщениях
Поинты: 130
Чё-то с прозрачностью не полчается, может чего не понимаю....можно ли сделать тотбражение как на скрине уровни поддержки сопротивления.
Миниатюры:
Нажмите на изображение для увеличения
Название: 1.gif
Просмотров: 21
Размер:	17.4 Кб
ID:	101381  
Актёр Актёр вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 08.01.2013, 08:20   #791 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9022
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,680
Поблагодарили 9,022 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от Актёр Актёр Посмотреть сообщение
Чё-то с прозрачностью не полчается, может чего не понимаю....можно ли сделать тотбражение как на скрине уровни поддержки сопротивления.
Если ты имеешь ввиду не невидимость, а именно прозрачность, то не знаю.
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 08.01.2013, 11:24   #792 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,529
Репутация: 3649
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,118
Поблагодарили 3,653 раз(а) в 1,472 сообщениях
Поинты: 2007
Это решается не прозрачностью, а тем что сверху
Миниатюры:
Нажмите на изображение для увеличения
Название: 00.png
Просмотров: 18
Размер:	43.1 Кб
ID:	101449  
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (08.01.2013), Актёр Актёр (08.01.2013)
Старый 08.01.2013, 16:01   #793 (permalink)
Местный знаток
 
Аватар для Dm_35
 
Регистрация: 22.09.2008
Сообщений: 73
Репутация: 833
Dm_35 - Dm_35 - Dm_35 - Dm_35 - Dm_35 - Dm_35 - Dm_35 -
Сказал(а) спасибо: 15
Поблагодарили 833 раз(а) в 61 сообщениях
Поинты: 26
Привет!
Помогите пожалуйста, что-то никак не соображу как заполнить массив

PHP код:
_OrdersTotal OrdersTotal();

for ( 
int z _OrdersTotal 1>= 0-- )
{
  if ( 
_OrdersTotal >)
   {
     
// заполняем массивы
    
_OrderSymbol[_ExpertOrdersTotal] = OrderSymbol();            
    
_OrderProfit  [_ExpertOrdersTotal]  = OrderProfit();
   
_ExpertOrdersTotal ++;
   }

Если открыты несколько сделок по одному символу, как суммировать и внести в массив?
Dm_35 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 08.01.2013, 16:20   #794 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,529
Репутация: 3649
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,118
Поблагодарили 3,653 раз(а) в 1,472 сообщениях
Поинты: 2007
Сообщение от Dm_35 Посмотреть сообщение
Привет!
Помогите пожалуйста, что-то никак не соображу как заполнить массив

PHP код:
_OrdersTotal OrdersTotal();

for ( 
int z _OrdersTotal 1>= 0-- )
{
  if ( 
_OrdersTotal >)
   {
     
// заполняем массивы
    
_OrderSymbol[_ExpertOrdersTotal] = OrderSymbol();            
    
_OrderProfit  [_ExpertOrdersTotal]  = OrderProfit();
   
_ExpertOrdersTotal ++;
   }

Если открыты несколько сделок по одному символу, как суммировать и внести в массив?
Здесь даже выделить ошибку невозможно.
Одна сплошная ошибка.

Если перебираешь ордера в цикле, то зачем дополнительный счётчик _ExpertOrdersTotal ++;
Где и как объявлены массивы?
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (08.01.2013)
Старый 08.01.2013, 16:46   #795 (permalink)
Местный знаток
 
Аватар для Dm_35
 
Регистрация: 22.09.2008
Сообщений: 73
Репутация: 833
Dm_35 - Dm_35 - Dm_35 - Dm_35 - Dm_35 - Dm_35 - Dm_35 -
Сказал(а) спасибо: 15
Поблагодарили 833 раз(а) в 61 сообщениях
Поинты: 26
Сообщение от AlexeyVik Посмотреть сообщение
Здесь даже выделить ошибку невозможно.
Одна сплошная ошибка.

Если перебираешь ордера в цикле, то зачем дополнительный счётчик _ExpertOrdersTotal ++;
Где и как объявлены массивы?
Это кусок кода, причем тут ошибки и объявления массивов?
Dm_35 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 08.01.2013, 16:57   #796 (permalink)
Местный житель
 
Аватар для Актёр Актёр
 
Регистрация: 26.11.2012
Сообщений: 283
Репутация: 231
Актёр Актёр - Актёр Актёр - Актёр Актёр -
Сказал(а) спасибо: 281
Поблагодарили 230 раз(а) в 91 сообщениях
Поинты: 130
Сообщение от AlexeyVik Посмотреть сообщение
Это решается не прозрачностью, а тем что сверху
Да это понятно, просто хотелось прозрачным сделать , для красоты не земной)
Актёр Актёр вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
AlexeyVik (08.01.2013)
Старый 08.01.2013, 19:06   #797 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,529
Репутация: 3649
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,118
Поблагодарили 3,653 раз(а) в 1,472 сообщениях
Поинты: 2007
Сообщение от Dm_35 Посмотреть сообщение
Это кусок кода, причем тут ошибки и объявления массивов?
Да при том, что если массив объявлен как int а туда писать символ, то ничего не запишешь. Это во-первых.
Во-вторых, если счётчик цикла до z >= 0; то почему и зачем условие if(_OrdersTotal > 0)

Целесообразней будет цикл в сторону увеличения счётчика
for(z = 0; z < _OrdersTotal; z++)
{
// Здесь заполнение массива
}

Но остаётся непонятно для чего такой массив и когда он заполняется. Что надо будет сделать если после заполнения массива будет открыт ещё один ордер или не один.
Как я смог понять, это разные массивы, а не двух\трёх мерный и соответственно как их надо будет использовать. Если для анализа с учётом символа, то для чего тебе понадобилось суммировать профит ордеров одного символа? Если же для тренировки заполнения массивов... Тогда другое дело. Но тогда очень важно понимать, что ты не ошибся в объявлении массивов. И важно как объявлены массивы. На глобальном уровне или локально. Инициализируется массив перед заполнением или нет.
И даже сейчас я не уверен, что перечислил тебе ВСЕ нюансы работы с массивами.

Последний раз редактировалось AlexeyVik; 08.01.2013 в 19:10.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (08.01.2013)
Старый 08.01.2013, 19:10   #798 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,529
Репутация: 3649
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,118
Поблагодарили 3,653 раз(а) в 1,472 сообщениях
Поинты: 2007
Сообщение от Актёр Актёр Посмотреть сообщение
Да это понятно, просто хотелось прозрачным сделать , для красоты не земной)
Такая прозрачность бывает только у объектов "Прямоугольник", "Треугольник" и "Эллипс".
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (08.01.2013), Актёр Актёр (08.01.2013)
Старый 08.01.2013, 19:41   #799 (permalink)
Местный знаток
 
Аватар для Dm_35
 
Регистрация: 22.09.2008
Сообщений: 73
Репутация: 833
Dm_35 - Dm_35 - Dm_35 - Dm_35 - Dm_35 - Dm_35 - Dm_35 -
Сказал(а) спасибо: 15
Поблагодарили 833 раз(а) в 61 сообщениях
Поинты: 26
Сообщение от AlexeyVik Посмотреть сообщение
Но остаётся непонятно для чего такой массив и когда он заполняется. Что надо будет сделать если после заполнения массива будет открыт ещё один ордер или не один.
Как я смог понять, это разные массивы, а не двух\трёх мерный и соответственно как их надо будет использовать. Если для анализа с учётом символа, то для чего тебе понадобилось суммировать профит ордеров одного символа? Если же для тренировки заполнения массивов... Тогда другое дело. Но тогда очень важно понимать, что ты не ошибся в объявлении массивов. И важно как объявлены массивы. На глобальном уровне или локально. Инициализируется массив перед заполнением или нет.
И даже сейчас я не уверен, что перечислил тебе ВСЕ нюансы работы с массивами.
Не люблю я двухмерные
Собственно, если не влом и есть время, вот код, закомментирована функция, которая убирает дубликаты символов, но не суммирует профит.
И спасибо за помощь.
Вложения:
Тип файла: mq4 AllOrdersControl.mq4 (7.1 Кб, 8 просмотров)
Dm_35 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 08.01.2013, 19:43   #800 (permalink)
Местный житель
 
Аватар для Актёр Актёр
 
Регистрация: 26.11.2012
Сообщений: 283
Репутация: 231
Актёр Актёр - Актёр Актёр - Актёр Актёр -
Сказал(а) спасибо: 281
Поблагодарили 230 раз(а) в 91 сообщениях
Поинты: 130
Сообщение от AlexeyVik Посмотреть сообщение
Такая прозрачность бывает только у объектов "Прямоугольник", "Треугольник" и "Эллипс".
Не знал, спасибо
Актёр Актёр вне форума   Ответить с цитированиемОтветить с цитированием  
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 06:04. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
SEO by vBSEO