Chi può aiutare con il robot, perché non funziona? - pagina 2

 
Alexey Volchanskiy:

Le regole del linguaggio non permettono di ingoiare parametri con valori predefiniti. Se devi impostare il colore delle frecce, scrivi tutti i parametri a sinistra del colore. B slittamento 3 non è sufficiente, se è 5 cifre, ci sarà requotes, ho scritto 50. E SL e TP non dovrebbero essere impostati uguali a zero,Aleksey Vakhrushev ha già scritto su questo.


È un errore:

Il valore di ritorno di 'OrderSend' dovrebbe essere controllato
 
GIM:

Errore:

Il valore di ritorno di 'OrderSend' dovrebbe essere controllato
Questo è solo un avvertimento. Il file verrà compilato.
 

Buon pomeriggio per favore help.EA apre solo per la vendita.


extern double Lots=0.1;
extern int FastMAPeriod=14;
extern int FastMAMethod=0; // 0-SMA, 1-EMA, 2-SMMA, 4-LWMA
extern int FastMAPrice=0; // 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted
extern int SlowMAPeriod=42;
extern intn SlowMAMethod=0; // 0-SMA, 1-EMA, 2-SMMA, 4-LWMA
extern int SlowMAPrice=0; // 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted
extern int TP=0; //takeprofit
extern int SL=0; //stop loss

int BuyTicket,SellTicket;



int start(){

doppio fast_ma1=iMA(NULL,0,FastMAPeriod,0,FastMAMethod,FastMAPrice,1);
double slow_ma1=iMA(NULL,0,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,1);
doppio fast_ma2=iMA(NULL,0,FastMAPeriod,0,FastMAMethod,FastMAPrice,2);
double slow_ma2=iMA(NULL,0,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,2);


if(fast_ma1>slow_ma1 && !(fast_ma2>slow_ma2)){
if(SellTicket!=0){ /Vero se SellTicket non è 0 ;

SellTicket=0;
}
if(BuyTicket==0){ //// True se BuyTicket è 0;
BuyTicket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL=Ask-SL*Point,Ask+TP*Point,NULL,0,0,CLR_NONE);
}
}
if(fast_ma1<slow_ma1 && !(fast_ma2<slow_ma2)){
if(BuyTicket!=0){ //vero se BuyTicket non è 0 ;
BuyTicket=0;
}
if(SellTicket==0){ //Vero se(SellTicket è uguale a 0
SellTicket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid-SL*Point,Bid+TP*Point,NULL,0,0,CLR_NONE);
}
}

ritorno(0);
}

 
Alexey Kozitsyn:
Questo è solo un avvertimento. Il file verrà compilato.
Beh, ancora non si apre l'accordo .....
 
GIM:
Ancora non si apre l'accordo.....
Beh, credo che non sia questo il caso... Anche se potrebbe valere la pena dare un'occhiata al diario di bordo per vedere cosa dice... Beh, è solo un'opzione.
 
Alexey Kozitsyn:
Beh, immagino che non era destino... Anche se potrebbe valere la pena dare un'occhiata alla rivista per vedere cosa dice... Beh, questa è un'opzione.
Grazie! Continuerò a provare))
 
AdikAmir:

Buon pomeriggio per favore help.EA apre solo per la vendita.


extern double Lots=0.1;
extern int FastMAPeriod=14;
extern int FastMAMethod=0; // 0-SMA, 1-EMA, 2-SMMA, 4-LWMA
extern int FastMAPrice=0; // 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted
extern int SlowMAPeriod=42;
extern intn SlowMAMethod=0; // 0-SMA, 1-EMA, 2-SMMA, 4-LWMA
extern int SlowMAPrice=0; // 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted
extern int TP=0; //takeprofit
extern int SL=0; //stop loss

int BuyTicket,SellTicket;



int start(){

doppio fast_ma1=iMA(NULL,0,FastMAPeriod,0,FastMAMethod,FastMAPrice,1);
double slow_ma1=iMA(NULL,0,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,1);
doppio fast_ma2=iMA(NULL,0,FastMAPeriod,0,FastMAMethod,FastMAPrice,2);
double slow_ma2=iMA(NULL,0,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,2);


if(fast_ma1>slow_ma1 && !(fast_ma2>slow_ma2)){
if(SellTicket!=0){ /Vero se SellTicket non è 0 ;

SellTicket=0;
}
if(BuyTicket==0){ //// True se BuyTicket è 0;
BuyTicket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL=Ask-SL*Point,Ask+TP*Point,NULL,0,0,CLR_NONE);
}
}
if(fast_ma1<slow_ma1 && !(fast_ma2<slow_ma2)){
if(BuyTicket!=0){ //vero se BuyTicket non è 0 ;
BuyTicket=0;
}
if(SellTicket==0){ //Vero se(SellTicket è uguale a 0
SellTicket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid-SL*Point,Bid+TP*Point,NULL,0,0,CLR_NONE);
}
}

ritorno(0);
}

È uno strano codice che non ho mai visto prima.

Le variabili BuyTicket e SellTicket saranno uguali a zero o incomprensibili ogni volta che arriva un nuovo tick perché non sono inizializzate.

Il costrutto if(fast_ma1>slow_ma1 && !(fast_ma2>slow_ma2)) non è affatto chiaro quando tradotto in linguaggio umano questa condizione appare così

se fast_ma1 è maggiore di slow_ma1 E NON fast_ma2 è maggiore di slow_ma2. L'operatore ! significa negazione in questo modo: if(fast_ma1>slow_ma1 && (fast_ma2<slow_ma2))

La tua condizione vale quando fast_ma1>slow_ma1 = true (vero) e fast_ma2>slow_ma2 = false (falso)

....
if (OrdersTotal()==0)
{
  if (условие на покупку)
  {
    ticet = OrderSend(Symbol(),OP_BUY,.....);
    if (ticet==0) Print("ERROR");
  }
  if (условие на продажу)
  {
    ticet = OrderSend(Symbol(),OP_SELL,.....);    
    if (ticet==0) Print("ERROR");
  }

}
//Простейший код для примера.
 
Vitalii Ananev:

Questo è uno strano codice che non ho mai visto prima.

Le variabili BuyTicket e SellTicket saranno uguali a zero o incomprensibili ogni volta che arriva un nuovo tick perché non sono inizializzate.

Il costrutto if(fast_ma1>slow_ma1 && !(fast_ma2>slow_ma2)) non è affatto chiaro quando tradotto in linguaggio umano questa condizione appare così

se fast_ma1 è maggiore di slow_ma1 E NON fast_ma2 è maggiore di slow_ma2. L'operatore ! significa negazione in questo modo: if(fast_ma1>slow_ma1 && (fast_ma2<slow_ma2))

La vostra condizione vale quando fast_ma1>slow_ma1 = true (vero) e fast_ma2>slow_ma2 = false (falso)

Ho messo il tuo codice comunque La posizione Sell non è aperta, il suo BUY solo.
 
AdikAmir:
Ho messo il tuo codice ancora non apre la posizione Sell, solo BUY.

extern double Lots=0.1;
extern intnal double FastMAPeriod=5;
extern int FastMAMethod=0; // 0-SMA, 1-EMA, 2-SMMA, 4-LWMA
extern int FastMAPrice=0; // 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted
extern int SlowMAPeriod=75;
extern intn SlowMAMethod=3; // 0-SMA, 1-EMA, 2-SMMA, 4-LWMA
extern int SlowMAPrice=3; // 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted
extern int TP=500; //takeprofit
extern int SL=250; //stop loss
doppio ticet;

int start(){

doppio fast_ma1=iMA(NULL,0,FastMAPeriod,0,FastMAMethod,FastMAPrice,1);
double slow_ma1=iMA(NULL,0,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,1);
doppio fast_ma2=iMA(NULL,0,FastMAPeriod,0,FastMAMethod,FastMAPrice,2);
double slow_ma2=iMA(NULL,0,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,2);

se (OrdiniTotali()==0)
{
se (fast_ma1>slow_ma1 && (fast_ma2<slow_ma2))
{ ticet = OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-SL*Point,Ask+TP*Point,NULL,0,0,CLR_NONE);
se (ticet==0) Print("ERROR");
}
se (slow_ma1>fast_ma1 && (slow_ma2<fast_ma2))
{
ticet = OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid-SL*Point,Bid+TP*Point,NULL,0,0,CLR_NONE);
se (ticet==0) Print("ERROR");
}

}

ritorno(0);
}




 
Dobbiamo cambiare i segni quando calcoliamo SL /TP
ticet = OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point,Bid-TP*Point,NULL,0,0,CLR_NONE);