нужна помощь в кодировании, пожалуйста - страница 2

 

deVries, если бы вы прекратили свою тираду достаточно долго, чтобы объяснить, ПОЧЕМУ код, с которого я начал, настолько "плох", я мог бы понять, что я могу сделать, чтобы исправить это. Прочитайте свой ответ еще раз, а затем объясните, как ваш ответ может кому-то помочь.

Спасибо, RaptorUK, наконец-то ответ, который я могу использовать.

Чтобы помочь объяснить, я хочу, чтобы советник работал только на одной паре, по одной сделке за раз. Как я сказал ранее, "... и разместил по одному на каждом из 5 различных графиков пары, все на той же платформе MT4...", что дает 5 отдельных (?) графиков с этим советником на них. На данном этапе я не хочу или не должен проверять магические числа, не так ли?

Что касается комментария о барах, спасибо.

Что касается проскальзывания, 4/5 брокеров и т.д., на данном этапе это не имеет значения, не так ли? Я использую это для себя, на одном и том же брокере и т.д.

 
и я забыл добавить, я не ищу короткого пути, просто помощь в преодолении проблемы.
 
Извините, я как-то пропустил другие ответы, поэтому прошу прощения за комментарий "разглагольствования". и спасибо за реальную помощь.

Я протестировал его, и он работает нормально, без ошибок, без предупреждений. Так почему же он не работает на живом графике? (Я еще не реализовал предложения выше).
 
unclebigpete:

1. На данном этапе я не хочу и не должен проверять магические числа, не так ли?

2. Что касается проскальзывания, 4/5 брокеров и т.д., на данном этапе это не имеет значения, не так ли? Я использую это для себя, на одном и том же брокере и т.д.

1. Если вы никогда не собираетесь размещать ручную торговлю на одной и той же паре ... тогда вы можете работать без Magic Numbers ... если вы забудете и случайно разместите ручную торговлю на одной из пар, на которых у вас работает этот советник, то советник будет управлять вашей ручной торговлей тоже ... если вы правильно его закодируете, то это не будет проблемой.

2. Это не имеет значения ... до тех пор, пока вы всегда помните, что вы правильно устанавливаете внешние параметры... например, код, который вы разместили, имеет Slippage 3 ... на 5-значном брокере это будет равно 0,3 пункта проскальзывания ... если вы правильно закодируете его, то 3 всегда будет означать 3 пункта как на 4-, так и на 5-значном брокере, и тогда у вас будет меньше возможностей для ошибок. Неправильное кодирование - это короткий путь, который, вероятно, будет стоить вам времени в долгосрочной перспективе...

 
unclebigpete:

И я протестировал его, и он работает нормально, без ошибок и предупреждений. Так почему же он не работает на живом графике? (Я еще не реализовал предложения выше).
Где вы его тестировали? В тестере стратегий? Где вы искали ошибки?
 
Да, протестировал в тестере стратегий и скомпилировал его, получивответ "нет ошибок, нет предупреждений".
 

А вот и мой:

Наладьте дисциплину с кодированием, первый параметр iCustom - <строка Symbol>, используйте Symbol() или NULL вместо нуля.

MetaEditor > окно навигатора (Ctrl +D) > вкладка словарь > технический индикатор > iCustom

int QQE_4hr    = iCustom( Symbol(), 240, "c_QQEA",  SF,     RSI_Period,    DART_Factor,     0, 1 );
int QQE_4hr_2  = iCustom( Symbol(), 240, "c_QQEA",  SF,     RSI_Period,    DART_Factor,     0, 2 );

Вы используете сдвиг 1 и 2 на 4-х часовом графике, это будет очень долго.

Ордер селект, о котором я говорил ранее, пишите так.

MetaEditor > Окно навигатора (Ctrl +D) > вкладка словарь > Торговые функции > OrderSelect()

for(int i=0; i<Total; i++)
     {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
        {

Я напишу больше об этой функции OrderSelect().

Есть 2 закрытия ордера, пишите так, оба.

MetaEditor > окно навигатора (Ctrl +D) > вкладка словарь > торговые функции > OrderClose()

OrderClose(OrderTicket(),
           OrderLots(),
           OrderClosePrice(),//Bid,
           Slippage,
           MediumSeaGreen);

И у меня другой подход, чем у RaptorUK, который дает тот же результат, хотя, есть 2 из них, и вы должны изменить оба.

if (Ticket > 0)
  {
  if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES))
     {
      Print("SELL order opened : ",
             OrderOpenPrice());
             if(SignalMail)
                SendMail("[Signal Alert]",
                         "["
                         +Symbol()
                         +"] "
                         +DoubleToStr(Bid,Digits)
                         +" Open Sell");
       } // if(Order... // ==>> moved from below 
     } // if(Ticket...   
     else
     {
     Print("Error opening SELL order : ",
           GetLastError());
     } // else
   } ==>> move this parenthesis up there

Удачи!

:)

 
unclebigpete:
Да, протестировал в тестере стратегий и скомпилировал его, получивответ "нет ошибок, нет предупреждений".
Хорошо, значит, ошибок при компиляции нет... а как насчет ошибок при запуске в тестере стратегий? Запустите его снова и посмотрите на вкладку "Журнал". . .
 

Запустил его только что на audnzd с 17/05 по 22/05, и он открыл 3 сделки, 2 покупки, которые были остановлены, и одну продажу, которая была закрыта в конце теста.

Вот информация из журнала, сначала верхняя строка.

2012.05.22 21:38:51 QQE-4hr_15min- testing-2205: успешно загружен

2012.05.22 21:38:53 QQE-4hr_15min- testing-2205 inputs: MagicNumber=0; Lots=1; Slippage=3; StopLoss=300; TakeProfit=1000; TrailingStop=300; Nbr_Period=10; Multiplier=3;

2012.05.22 21:38:53 2012.05.17 00:00 c_QQEA AUDNZD,H4: успешно загружен

2012.05.22 21:38:53 2012.05.17 00:00 c_QQEA AUDNZD,M15: успешно загружен

2012.05.22 21:39:13 2012.05.17 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: open #1 buy 1.00 AUDNZD at 1.29960 sl: 1.29660 ok

2012.05.22 21:39:13 2012.05.17 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: открыт ордер BUY : 1.2996

2012.05.22 21:39:13 2012.05.17 18:32 Тестер: стоп-лосс #1 на 1.29660 (1.29660 / 1.29698)

2012.05.22 21:39:15 2012.05.18 20:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: open #2 buy 1.00 AUDNZD at 1.30386 sl: 1.30086 ok

2012.05.22 21:39:15 2012.05.18 20:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: открыт ордер BUY : 1.3039

2012.05.22 21:39:15 2012.05.18 23:09 Тестер: стоп-лосс #2 на 1.30086 (1.30083 / 1.30121)

2012.05.22 21:39:16 2012.05.21 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: open #3 sell 1.00 AUDNZD at 1.29739 sl: 1.30039 ok

2012.05.22 21:39:16 2012.05.21 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: открыт ордер SELL: 1.2974

2012.05.22 21:39:17 2012.05.21 23:59 Тестер: ордер #3 закрыт

2012.05.22 21:39:17 2012.05.21 23:59 c_QQEA AUDNZD,M15: удален

 
Возможно, проблема в вашем проскальзывании. В бэктестинге никогда не используется проскальзывание. Читайте Особенности тестирования и лимиты в MetaTrder4https://www.mql5.com/en/articles/1512
Причина обращения: