[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 171

 

Ciao a tutti, ho scritto un EA! Nel tester, tutto funziona, ma nel conto reale, si rifiuta di aprire le posizioni! Si noti che chiude molto bene le posizioni aperte manualmente, ma, appunto per aprire, non vuole ... Cosa fare?


CODICE:


//+------------------------------------------------------------------+
//| DOKTRADE.mq4 |
//| DOKSTER@YANDEX.RU |
//| DOKSTER@YANDEX.RU |
//+------------------------------------------------------------------+
#property copyright "DOKSTER@YANDEX.RU"
#proprietà 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 TOTALE;
int SPREAD;

doppio SPR;
doppio SPRW;

doppio FRCU;
doppio FRCU; doppio FRCD;

doppio EMAH;
doppio EMAM;;
doppio EMAL; doppio EMAL;

doppio OPEN;
doppia CHIUSURA;

doppio DFB;
doppio 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 = (CHIUDERE-FRCD);
DFS = (FRCU-CLOSE);

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

TOTAL = OrdersTotal();

se(TOTALE<1)

{

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

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


se (OPEN>EMAL&&CLOSE<EMAL)

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

ritorno(0);

}
}

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

{

OrderSelect(CNT,SELECT_BY_POS,MODE_TRADES);

{

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

{

se (OPEN>EMAL&&CLOSE<EMAL)

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

ritorno(0);

}

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

{

se (OPEN<EMAH&&CLOSE>EMAH)

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

ritorno(0);

}

}

}

}
 

Buon pomeriggio!

Ragazzi, per favore aiutatemi a capire dove sto sbagliando. Ho un indicatore Aroon Up&Dn.

Sto cercando di metterlo nel mio Expert Advisor... Non vuole aprire ordini:

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);
  }
File:
 
7sintez:

Ciao a tutti, ho scritto un EA! Nel tester, tutto funziona, ma nel conto reale, si rifiuta di aprire le posizioni! Si noti che chiude molto bene le posizioni aperte manualmente, ma, appunto per aprire, non vuole ... Cosa devo fare?


Prima di tutto, guarda gli errori nel log... Per i parametri di prezzo quando si invia un ordine NormalizeDouble è altamente raccomandato.

 
splxgf:

Per cominciare, guardate gli errori nel diario di bordo... Per i parametri di prezzo quando si invia un ordine NormalizeDouble è altamente raccomandato.

Grazie per il consiglio, ma se puoi essere più specifico... Non riesco a vedere nulla nel mio diario, tranne la sincronizzazione! Si prega di consigliare, può essere qualcosa da aggiungere da qualche parte? Sì, e si chiude normalmente... Cioè alla chiusura tutto funziona...!
 
E un'altra domanda - il funzionamento di qualsiasi altro script può influenzare il funzionamento di questo EA?
 
Finito con NormalizeDouble... Nessuna reazione! Cosa devo cambiare nelle impostazioni?
 
splxgf:

Puoi andare su https://docs.mql4.com/ru/array/ArrayMaximum

su un array di High.

Se puoi essere più specifico, non sono riuscito a capirlo. Ho bisogno di trovare il valore più alto tra High[i] e High[1]. Grazie!
 
93408:

Buon pomeriggio!

Ragazzi, per favore aiutatemi a capire dove sto sbagliando. Ho un indicatore Aroon Up&Dn.

Sto cercando di metterlo nel mio Expert Advisor... Non vuole aprire ordini:


Penso che a causa di questo

se (Volume[0]>1) ritorno;

 
7sintez:
Grazie per il suggerimento, ma se puoi essere più specifico... Perché il registro non mostra nulla a parte la sincronizzazione! Si prega di consigliare, può essere qualcosa da aggiungere da qualche parte? Sì, e si chiude normalmente... Cioè alla chiusura tutto funziona...!

In realtà, non ha senso fare queste domande a uno scrittore esperto :) Quindi, non sei abbastanza maturo per essere un principiante. Se vuoi controllare le posizioni di controllo e i valori limite per la vicinanza al prezzo aperto, probabilmente imparerai una cosa o due sulla grammatica cinese.
 
Roger:


Credo che questo sia il motivo.

se (Volume[0]>1) ritorno;

No, non è questo.

Grazie a tutti, ho capito. Ha funzionato