[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 590

 
Подскажите литературу чтоб я начитался и создал свой советник! Или простым смертным ето не дано? )))
 
rigonich:

1.:))) нет же такого условия НЕмодифицировать! :))) .  Нет, зато есть оператор if который и позволяет создавать практически любые условия.

2. если вы желаете модифицировать ордер только один раз, зачем его модифицировать вообще? Поставьте нужные параметры при открытии ордера.

3.А по поводу стопов - ведь сделка может закрываться не только по стопу, но и раньше, если складываются условия на переворот например...или просто выход по рынку.

   Все это возможно, вопрос в задаче(вашей цели). Если у вас есть готовая торговая стратегия, ивам необходимо только "механизировать" ее, --это одно, а если вы желаете научиться      делать это с любой торговой стратегий -- это другое. Для первого надо иметь готовую стратегию, для второго -- научиться программировать.    


1) это понятно

2) только что проверил...в Альпари нельзя выставить стоп и тейк при отрытии. только посредством последующей модификации...издержки нон-дилинг-деска

 

3) стратегия есть.  

 
Beowulf:
Подскажите литературу чтоб я начался и создал свой советник! Или простым смертным ето не дано? )))

https://book.mql4.com/ru/
 

Спасибо!
 
lottamer:


:))) нет же такого условия НЕмодифицировать! :)))

if ((когда-то Ваши папа+мама == чик-чик-чик) == TRUE) lottamer

ВОПРОС: при каких условиях мы бы с Вами сейчас не чик-чик-чик  разговаривали?! :)))

 
Beowulf:
Подскажите литературу чтоб я начался и создал свой советник! Или простым смертным ето не дано? )))
нам (простым смертным) ето не дано! ;)))
 
lottamer:


1) это понятно

2) только что проверил...в Альпари нельзя выставить стоп и тейк при отрытии. только посредством последующей модификации...издержки нон-дилинг-деска

 

3) стратегия есть.  


Тогда все просто, как вы и предлагали. После модификации устанавливаете флажок и проверяете его состояние перед модификацией.Это если один ордер. Если несколько -- надо самому учитывать ордера. Как -- есть в разделе статей.
 
TarasBY:
нам (простым смертным) ето не дано! ;)))



Ну ниче почитаю понапрягаю немного свой вакуум ))))
 

Товарищи, подскажите, когда ордера переоткрываются ролловером то возможны ли проскальзывания для значений стопа и тейка ? и как будет выставляться стоп если после ролловера разница между ценой открытия и стопом будет меньше стоплевела ?

 

А вообще задача у меня следующая. Есть открытый рыночный ордер, нужно определить открыт он ролловером или нет и если да то получить тикет того предыдущего ордера который закрыли. Может кто подскажет алгоритм поиска ? я пока делаю так:

1. Выделяю первый открытый ордер.
2. Смотрю время его открытия, если открылся с 23:40 до 00:20 то продолжаю проверять этот ордер дальше (40 минут окно взял на всякий пожарный ,хотя по идее можно взять с 23:50 по 23:59)
3. Запоминаю его тикет, стоп и тейк
4.Проверяю все закрытые ордера по истории где в комментариях есть слово swap и совпадают валютные пары
5. Сравниваю данные  по стопам и тейкам ,если совпдают то вот она искомая пара ордеров, если нет то возвращаюсь на шаг 1

 

ОТВЕТ МНОЮ НАЙДЕН (лично), но оставлю пост для истории! :))))

----------------------------------  

а вот какая штука интересная получается...

 

есть у меня скрипт (в сети взял). он модифицирует открытый ордер.

идея моя была такая: взять его полностью, и вставить в мой советник как пользовательскую функцию, и обращаться к ней когда надо.

 проблема в том, что компилятор выдает ошибку  "'MB_OK' - variable not defined G:\Program_Files_2\MT4-demo\experts\33.mq4 (153, 37)" - 3-тья строка с конца

 

А если компилировать сам скрипт, то все чисто!

я выяснил что такое МВ_ОК...но не пойму почему в скрипте он проходит, а в советнике ругается???

 

 

//+------------------------------------------------------------------+
//|                                               Изменить стопы.mq4 |
//|                                                          Мефодий |
//|                                                    ppc-2@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Мефодий"
#property link      "ppc-2@mail.ru"
#include <WinUser32.mqh>

extern  int  StopLoss = 500; 
extern  int  TakeProfit = 500;

// #property show_confirm
// #property show_inputs

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+

int start()
  {
        bool   result;
        double stop_loss,take_profit,point,bid,ask, lotsize;
        int    cmd, total, error, spread;
        string message;
//----
   total=OrdersTotal();

//----
   for(int i=0; i<total; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         //---- print selected order
         OrderPrint();
         cmd=OrderType();
         point=MarketInfo(OrderSymbol(),MODE_POINT);
         bid= MarketInfo(OrderSymbol(),MODE_BID);
         ask= MarketInfo(OrderSymbol(),MODE_ASK);
         spread=MarketInfo(OrderSymbol(),MODE_SPREAD);     
         //---- buy or sell orders are considered
         if(cmd==OP_BUY || cmd==OP_SELL)
          {
            //---- modify first market order
            while(true)
             {
                if(cmd==OP_BUY){
                        string type = "buy";
                        if(OrderStopLoss()!=0)stop_loss=OrderStopLoss();
                        else stop_loss=OrderOpenPrice()-StopLoss*point;
                        if(OrderTakeProfit()!=0)take_profit=OrderTakeProfit();
                        else take_profit=OrderOpenPrice()+TakeProfit*point;
                }
                     
                else{
                        type = "sell";
                        if(OrderStopLoss()!=0)stop_loss=OrderStopLoss();
                        else stop_loss=OrderOpenPrice()+StopLoss*point;
                        if(OrderTakeProfit()!=0)take_profit=OrderTakeProfit();
                        else take_profit=OrderOpenPrice()-TakeProfit*point;
                }   
                result=OrderModify(OrderTicket(), OrderOpenPrice(), stop_loss, take_profit, 0, CLR_NONE);
                if(result!=true) { error=GetLastError(); Print("LastError = ",error);}
                else {error=0;}
                if(error==135) RefreshRates();
                else break;
              }
                if(error==0){
                        message=message+"Ордер #"+OrderTicket()+" - "+type+" - "+DoubleToStr(OrderLots(), 2)+" успешно модифицирован.\n";
                        }
                        else{
                                if(error == 130){string error_desc = " - Неправильные стопы";} else error_desc = "";
                                if(error != 1)
                        message=message+"Ошибка модификации ордера #"+OrderTicket()+" - "+type+" - "+DoubleToStr(OrderLots(), 2)+". "+error_desc+" \n";
                        }

              //---- print modified order (it still selected after modify)
              OrderPrint();
              continue;             
           }
        }
      else { Print( "Error when order select ", GetLastError()); break;}
     }
        int ret=MessageBox(message, NULL, MB_OK);
        //if(ret==IDOK) return(0);
//----
   return(0);
  }
//+------------------------------------------------------------------+
Причина обращения: