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

 

Всем привет! Написал Советника! На тестере все работает, а вот на реальном счету открывать позиции отказывается! Замечу, что закрывает открытые вручную позиции очень даже хорошо, а вот, именно ОТКРЫВАТЬ, не хочет... Что делать?


КОД:


//+------------------------------------------------------------------+
//| DOKTRADE.mq4 |
//| DOKSTER@YANDEX.RU |
//| DOKSTER@YANDEX.RU |
//+------------------------------------------------------------------+
#property copyright "DOKSTER@YANDEX.RU"
#property link "DOKSTER@YANDEX.RU"

extern double LOT = 0.01; // LOTS
extern double KOF = 2;
extern double SAF = 5;
extern int FRC = 21;

int start()

{


int CNT;

int TOTAL;
int SPREAD;

double SPR;
double SPRW;

double FRCU;
double FRCD;

double EMAH;
double EMAM;
double EMAL;

double OPEN;
double CLOSE;

double DFB;
double DFS;

EMAH = iMA(NULL,0,34,8,MODE_SMA,PRICE_HIGH,1);
EMAM = iMA(NULL,0,34,8,MODE_SMA,PRICE_MEDIAN,1);
EMAL = iMA(NULL,0,34,8,MODE_SMA,PRICE_LOW,1);

OPEN = iOpen(NULL,0,1);
CLOSE = iClose(NULL,0,1);

FRCU = High[iHighest(NULL,0,MODE_HIGH,FRC,1)];
FRCD = Low[iLowest(NULL,0,MODE_LOW,FRC,1)];

DFB = (CLOSE-FRCD);
DFS = (FRCU-CLOSE);

SPR = MarketInfo(Symbol(),MODE_SPREAD);
SPRW = (SPR*Point);

TOTAL = OrdersTotal();

if(TOTAL<1)

{

{ if (OPEN<EMAH&&CLOSE>EMAH)

OrderSend(Symbol(),OP_BUY,LOT,Ask,3,FRCD-(SAF*Point),CLOSE+(DFB*KOF),"DOKTRADE",15775,0,Green);


if (OPEN>EMAL&&CLOSE<EMAL)

OrderSend(Symbol(),OP_SELL,LOT,Bid,3,FRCU+((SAF*Point)+SPRW),CLOSE-(DFS*KOF),"DOKTRADE",15885,0,Red);

return(0);

}
}

for(CNT=0;CNT<TOTAL;CNT++)

{

OrderSelect(CNT,SELECT_BY_POS,MODE_TRADES);

{

if (OrderType()==OP_BUY && OrderSymbol()==Symbol())

{

if (OPEN>EMAL&&CLOSE<EMAL)

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

return(0);

}

if (OrderType()==OP_SELL && OrderSymbol()==Symbol())

{

if (OPEN<EMAH&&CLOSE>EMAH)

OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue);

return(0);

}

}

}

}
 

Доброго времени суток!

Ребят, помогите, пожалуйста, разобраться в каком месте я туплю. Есть индикатор Aroon Up&Dn

Пробую его сунуть в советник... не хочет открывать ордера:

extern int     _Aroon_Period = 14;
extern int     _TimeF = 60;
extern int     _Point = 10;
extern double  _lots=0.01;
extern int     _Prof = 150;
int start()
  {
//----
   double _Up1, _Up2, _Dn1, _Dn2;
   if (Volume[0]>1) return;
   if (_Point<MarketInfo(Symbol(),MODE_STOPLEVEL)) _Point=MarketInfo(Symbol(),MODE_STOPLEVEL);
   _Up1=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,1,1); // пробовал 0 и AroonUpBuffer
   _Up2=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,1,2);
   _Dn1=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,2,1);
   _Dn2=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,2,2);  // пробовал 1 и AroonDnBuffer

   if (_Up1>_Dn1  && _Up2<_Dn2) 
   
   {      
       _OrderDelete(OP_SELLSTOP);
      _price=NormalizeDouble((High[1]+_Point*Point),MarketInfo(Symbol(),MODE_DIGITS));
      _OrderModify(OP_SELL);
      OrderSend(Symbol(),OP_BUYSTOP,_lots,_price,5,0,_price+_Prof*Point,0,0,0,Green);
   }
   if ( _Up1<_Dn1  && _Up2>_Dn2 ) 
   
   {     
      _OrderDelete(OP_BUYSTOP);
      _price=NormalizeDouble((Low[1]-_Point*Point),MarketInfo(Symbol(),MODE_DIGITS));
      _OrderModify(OP_BUY);
      OrderSend(Symbol(),OP_SELLSTOP,_lots,_price,5,0,_price-_Prof*Point,0,0,0,Red);
   }

//---- OrderSendError
   return(0);
  }
Файлы:
 
7sintez:

Всем привет! Написал Советника! На тестере все работает, а вот на реальном счету открывать позиции отказывается! Замечу, что закрывает открытые вручную позиции очень даже хорошо, а вот, именно ОТКРЫВАТЬ, не хочет... Что делать?


Для начала посмотреть ошибки в журнале... Для ценовых параметров при отправке ордера NormalizeDouble крайне рекомендуется.

 
splxgf:

Для начала посмотреть ошибки в журнале... Для ценовых параметров при отправке ордера NormalizeDouble крайне рекомендуется.

Спасибо конечно за совет, но если можно - поподробнее... Ибо в журнале кроме синхронизации ничего не отображается! Подскажите, может чего-куда дописать? Да и закрывается нормально... Т.е. на закрытие все работает..!
 
И еще такой вопрос - может ли работу какого-нибудь другого скрипта влиять на работу данного советника?
 
Дописал с NormalizeDouble... Реакции никакой! Может что в настройках поменять?
 
splxgf:

Можно пройтись https://docs.mql4.com/ru/array/ArrayMaximum

по массиву High.

Если можно поподробнее, не смог разобраться. Надо найти наибольшее значение в диапазоне от High[i] до High[1]. Спасибо!
 
93408:

Доброго времени суток!

Ребят, помогите, пожалуйста, разобраться в каком месте я туплю. Есть индикатор Aroon Up&Dn

Пробую его сунуть в советник... не хочет открывать ордера:


Я думаю из-за этого

if (Volume[0]>1) return;

 
7sintez:
Спасибо конечно за совет, но если можно - поподробнее... Ибо в журнале кроме синхронизации ничего не отображается! Подскажите, может чего-куда дописать? Да и закрывается нормально... Т.е. на закрытие все работает..!

Вообще-то, это нонсенс - задавать такие вопросы экспертописателю :) Получается, Вы еще до новичка не доросли и советы, типа: проверить вычисляемые стопы и тейки на близость к цене открытия ордера, для Вас вообще покажутся китайской грамотой.
 
Roger:


Я думаю из-за этого

if (Volume[0]>1) return;

Нет, не поэтому.

Всем спасибо, разобрался. Заработало

Причина обращения: