Что тут не так? - страница 4

 
sss2019:
А это что еще такое будет?

а это проверите сами и будете знать.
 
sergeev:

а это проверите сами и будете знать.
Зачем просто так сдаешь, даже фамилии не спросил. Это джокер, даже ордер открывать не надо, просто греби молча в карман.
 
Шкледятина однако! Вот так вот, да, ага.
 

А почему вот этот ордер не открывается, в чем ошибка?

//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern int MaFastPeriod = 30;
extern int MaSlowPeriod = 90;
extern int StopLoss = 25;
extern int TakeProfit = 50;

int init()
  {

  }



int deinit()
  {

  }



int start()
  {
double MaFast = iMA(Symbol(),0,MaFastPeriod,0,MODE_EMA,PRICE_CLOSE,0);
double MaSlow = iMA(Symbol(),0,MaSlowPeriod,0,MODE_EMA,PRICE_CLOSE,0);
   
   if(OrdersTotal() == 0 && MaFast > MaSlow)
   {
   OrderSend(Symbol(),0,0.1,Ask,3,Ask+TakeProfit*Point,Ask-StopLoss*Point,"CommentA",0,0,Green);
   }else
   {
      if(GetLastError() != 0)
         {
         Alert("Ошибка", GetLastError());
         }
   }
   
   return(0);
  }
 
Скажите как впринципе реализовать открытие сделки только на сигнальном баре?

Вот например одна скользящая средняя пересекла другую, открывается одна сделка, но если закрыть эту сделку то откроется еще одна, даже через несколько баров от сигнального.
 
sss2019:
Скажите как впринципе реализовать открытие сделки только на сигнальном баре?

Вот например одна скользящая средняя пересекла другую, открывается одна сделка, но если закрыть эту сделку то откроется еще одна, даже через несколько баров от сигнального.
Вас точно в гугле забанили, и в нашем FAQ'е тоже.
Для начала КАК получить сигнал пересечения двух МА?

Далее запрос в гугле, что-то типа открыть только один ордер site:mql4.com
 

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

Буду смотреть вашу ссылку, спасибо.

 
sss2019:

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

Буду смотреть вашу ссылку, спасибо.


Устанавливаем флаг, разрешающий открытие ордеров. Пришёл сигнал и флаг разрешает. Открываем позу и тут же снимаем флаг. Поза через какое-то время закрылась. Советник видит, что сигнал есть, но флаг снят (запрещено ставить ордера) - в результате ордер не устанавливается.

Далее. Если сигнала нет, устанавливаем флаг (разрешаем открывать позы). Или, как только возник новый сигнал, ставим флаг. Но во втором случае советник должен уметь отличать новый сигнал от старого.

 

drknn:



Устанавливаем флаг, разрешающий открытие ордеров. Пришёл сигнал и флаг разрешает. Открываем позу и тут же снимаем флаг. Поза через какое-то время закрылась. Советник видит, что сигнал есть, но флаг снят (запрещено ставить ордера) - в результате ордер не устанавливается.

Далее. Если сигнала нет, устанавливаем флаг (разрешаем открывать позы). Или, как только возник новый сигнал, ставим флаг. Но во втором случае советник должен уметь отличать новый сигнал от старого.


Ух ты спасибо, я думаю этот способ более универсальный.

Кстати, а как объявить в советнике что ордер был открыт, OrderSend как я понял передает только тикет ордера. Может быть это реализовать с помощью OrderSelect, получится?

 

Ну вот посмотрите пожалуйста что то я там наляпал и ордер теперь не открывается.

//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern int MaFastPeriod = 30;
extern int MaSlowPeriod = 90;
extern int StopLoss = 25;
extern int TakeProfit = 50;

int init()
  {

  }



int deinit()
  {

  }



int start()
  {
  double MyPoint = Point;
   if(Digits == 3 || Digits == 5)
      {
      MyPoint = Point * 10;
      }
      
double MaFast = iMA(Symbol(),0,MaFastPeriod,0,MODE_EMA,PRICE_CLOSE,0);
double MaSlow = iMA(Symbol(),0,MaSlowPeriod,0,MODE_EMA,PRICE_CLOSE,0);

   for(int SelectedOrder = 0; SelectedOrder < OrdersTotal(); SelectedOrder++)
      {
         bool Flag = false;
         if(OrderSelect(SelectedOrder,SELECT_BY_POS,MODE_TRADES)==True)
            {
            Flag = false;
            }
      }
   return(Flag);
   
   if(OrdersTotal() == 0 && MaFast > MaSlow && Flag == false)
      {
      OrderSend(Symbol(),0,0.1,Ask,30,Ask-StopLoss*MyPoint,Ask+TakeProfit*MyPoint,"CommentA",0,0,Green);
      }
   
   return(0);
  }
Причина обращения: