Come codificare? - pagina 276

 

Buon pomeriggio.

Sto iniziando a scrivere e capire il codice. Finora sono sopraffatto.

Vorrei iniziare a scrivere un ea usando l'istogramma MACD e quando la linea diriger attraversa sopra e sotto l'istogramma.

Qualcuno ha un semplice suggerimento di programma per iniziare a capire il codice e farlo girare per vedere come fa trading?

Grazie a te

daniel

 

Importazione di linee di tendenza da Excel/CSV=?

Ciao, ho scritto alcuni semplici script negli ultimi giorni, specialmente ObjectCreate (OBJ_TREND con Ray=1) è davvero bello come funziona, ma come posso disegnare gli oggetti da un file csv pronto, dove ho alcuni dati storici di chiusura per le mie linee di chiusura, perché voglio essere in grado di cancellare il mio Template e importare i dati ogni volta che ne ho bisogno con uno script,

qualcuno ha un'idea di come questo possa funzionare?

Il CSV ha una data (senza tempo) e un valore di chiusura (non avrei bisogno di altri dati per le linee)

e lo script dovrebbe disegnare una linea da questa data con Ray=1 e personalizzare il colore

forse lo script potrebbe anche controllare il grafico aperto (simbolo) e prendere il file csv corretto, se ne ho più di uno ;-)

Per favore, qualcuno può aiutarmi

 

Errore per OrderDelete(OrderTicket())

Ciao a tutti!

Sono nuovo nella programmazione MQL4 ma per il resto conosco il C++.

Ma ho qualche problema con le funzioni di trading.

Questo è il mio problema:

Creo un ordine pendente con :

ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-5*Point,slippage,0,0,"",0,0,0,Green);

e in un altro punto del programma voglio cancellarlo:

se (OrderSelect(ticket,SELECT_BY_TICKET)) OrderDelete(OrderTicket());

ERRORE 4108! Perché? Il numero del biglietto è corretto, lo stampo.

Ma se uso :

if (OrderSelect(position, SELECT_BY_POS))OrderDelete(OrderTicket());

è OK!

Perché?

Grazie per il vostro supporto e per il forum.

 

Codice per terminare l'EA?

Ciao a tutti,

Sto cercando del codice che termina un EA. Ho pubblicato una piccola martingala che ho scritto. Ho fatto in modo che chiuda tutti gli ordini pendenti e aperti quando raggiunge una percentuale di drawdown del conto. Sono anche stato in grado di farlo smettere di fare trading quando viene raggiunto un obiettivo di profitto giornaliero. Ricomincia a fare trading il giorno dopo. (Grazie a chi ha scritto SWB Grid, dato che ho usato il loro codice).

Tuttavia, vorrei che l'EA terminasse quando raggiunge una certa condizione. Diciamo che colpisce il Max Percentage Drawdown e chiude tutti gli ordini pendenti e le posizioni aperte. A quel punto, voglio che l'EA si chiuda da solo in modo che non ricominci a fare trading finché non rimuovo l'EA dal grafico e lo rimetto su.

Ecco l'EA. Qualsiasi suggerimento o aiuto è molto apprezzato!

Grazie,

Joe

 

Serve aiuto per "'\fine_di_programma' - parentesi sinistra sbilanciata"?

Ciao, sto lavorando su un EA e continuo a ricevere un messaggio di errore durante la compilazione: "'\fine_di_programma' - parentesi sinistra sbilanciata". Di solito questo messaggio di errore è legato a un numero non equilibrato di parentesi a sinistra e a destra. Tuttavia, ho controllato i miei codici in alto e in basso e ho scoperto che ho un numero uguale di parentesi a sinistra e a destra. Quindi mi fa davvero impazzire il fatto che non riesco a capire dove sia andato storto. Qualcuno può controllare i miei codici e dirmi come risolvere il problema? Grazie mille. I miei codici sono postati qui sotto:

//+------------------------------------------------------------------+

//| Breakout.mq4 ||

//| Pooh |

//| |

//+------------------------------------------------------------------+

#proprietà copyright "Pooh"

#proprietà link ""

//--- parametri di ingresso

extern int LengthI=23;//per entrare nel mercato

extern int LengthO=7;//per uscire

extern double Lots=0.1; //per la dimensione dell'ordine

extern int N1=14; //periodo per ATR

extern int NLots=1; //numero di lotto d'ordine aumentato

//+------------------------------------------------------------------+

//|funzione di inizializzazione dell'esperto |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| funzione di deinizializzazione esperto |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| funzione di inizio esperto |

//+------------------------------------------------------------------+

int start()

{

//----

doppio HLong,LLong,HShort,LShort;

HLong=iHigh(NULL,0,iHighest(NULL,0,2,LengthI,2));

LLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2));

LShort=iLow(NULL,0,iLowest(NULL,0,1,LengthI,2));

HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2));

int cnt, cot,ticket, totale;

totale=OrdiniTotali();

se (totale<1)

{

se (iClose(NULL,0,1)>HLong)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000, "EA Long",123,0,Green);

se (ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Ordine lungo aperto : ",OrderOpenPrice());

}

altrimenti

Print("Errore nell'apertura dell'ordine lungo: ",GetLastError());

return(0);

}

se (iClose(NULL,0,1)<LShort)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red);

se (ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Ordine corto aperto:",OrderOpenPrice());

}

altrimenti Print("Errore nell'apertura dell'ordine SHORT:",GetLastError());

return(0);

}

return(0);

}

for(cnt=0;cnt<totale;cnt++)

{ //10

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

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

{

if(OrderType()==OP_BUY) // la posizione lunga è aperta

{

// deve essere chiusa?

if(Bid<=LLong)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);//chiude la posizione

return(0);

}

//modifica il trailing stop

OrderModify(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Verde);

return(0);

}

else

{

if(Ask>=HShort)

{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);//chiude la posizione

return(0);

}

//modifica il trailing stop

OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Rosso);

return(0);

}

}

}

//ottenere il totale dei lotti di ordini lunghi e corti

double LOrderLots=0;

double SOrderLots=0;

for(cnt=0,cnt<=totale,cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

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

LOrderLots=LOrderLots+OrderLots();

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

SOrderLots=LOrderLots+OrderLots();

}

//aumentare l'ordine aperto

for(cot=0,cot<=totale,cot++)

{ //1

//aggiungere posizione per ordine lungo

if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==true) //se ci sono ordini aperti

{ if(OrderMagicNumber==123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2- se l'ordine aperto è stato aperto da EA pooh abd type è Long

{ //3

for(int i=1;i<=15;i++)

{ if(Bid>=OrderOpenPrice()+i*0.5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0.5*iATR(NULL,0,N1,0))&&LOrderLots<Lots*(i+1)) //4

{ ticket=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000, "EA Long",123,0,Green); //5

se (ticket>0)

{ //6

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Ordine lungo aperto : ",OrderOpenPrice());

} //6

altrimenti

Print("Errore nell'apertura dell'ordine lungo: ",GetLastError());

break;

} //5

} //4

return(0);

//aggiungere posizione per ordine breve

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

{ //7

for(int n2=1;n2<=15;n2++)

{ if(Ask(OrderOpenPrice()-(n2+1)*0.5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8

{ ticket=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red); //9

se (biglietto>0)

{ // 10

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Stampa("Ordine corto aperto : ",OrderOpenPrice());

} // 10

altrimenti

Print("Errore nell'apertura dell'ordine breve: ",GetLastError());

break;

} //9

} //8

return(0);

} //7

} //3

} //2

} //1

return(0)

}

 

Ho bisogno di un codificatore per codificare un semplice indicatore

Ho bisogno di qualcuno che codifichi un indicatore che faccia questo:

Su un semplice Fibonacci usando solo le linee 0,50,100. Quando una barra chiude sopra il 50% o sotto il 50% ma avendo l'opzione di scegliere se sto cercando una chiusura sopra o sotto, non entrambe. Quindi se sto cercando una chiusura sotto il 50% non voglio che ogni volta che chiude sopra il 50 scatti l'allarme. Voglio che mi avverta con un suono e che mi mandi un'email e/o un testo. È possibile? Grazie!

IMMAGINE: http://tinypic.com/r/dhbu6v/5

 

Cercando di codificare la logica semplice, incapace!

Ciao Forum,

Credo che questa sia una cosa molto semplice da codificare per voi che siete abbastanza bravi in MQL4, ma io sono un principiante e ho dei problemi, ho letto tutte le lezioni qui ma ancora non sono riuscito a capirlo

quindi voglio fare trading automatico

dimensione del lotto 0.1

stoploss = 30 pips

obiettivo di profitto 50 pips

coppia AUDUSD

Se (highprice - lowprice) < 60 pip tra le 02:00 GMT e le 10:00 GMT allora vendi AUDUSD a lowprice - 5pips o compra AUDUSD a highprice + 5pips, altrimenti nessun trade

 
Avasys:
Ciao Forum,

Credo che questa sia una cosa molto semplice da codificare per voi che siete abbastanza bravi in MQL4, ma io sono un principiante e ho dei problemi, ho letto tutte le lezioni qui ma ancora non sono riuscito a capirlo

quindi voglio fare trading automatico

dimensione del lotto 0.1

stoploss = 30 pips

obiettivo di profitto 50 pips

coppia AUDUSD

Se (highprice - lowprice) < 60 pips tra le 02:00 GMT e le 10:00 GMT allora vendi AUDUSD a lowprice - 5pips o compra AUDUSD a highprice + 5pips, altrimenti nessun trade

[lang=pl]Ciao, penso che non ci siano problemi a codificare questo EA ma ho una domanda.

Quando vuoi comprare/vendere? Hai bisogno di ordini pendenti sui livelli low-5 high+5?

saluti,

Grzesiek[/lang]

 
g.pociejewski:
[lang=pl]Ciao, penso che non ci siano problemi a codificare questo EA ma ho una domanda.

Quando vuoi comprare/vendere? Avete bisogno di ordini pendenti sui livelli low-5 high+5?

saluti,

Grzesiek[/lang]

ciao,

grazie per l'aiuto

Sì, quindi più precisamente AUDUSD trade range (differenza tra prezzo alto e prezzo basso) tra le ore 02:00 GMT e 10:00 GMT (questo è molto importante nel codice) è inferiore a 60 pips quindi questo è un segnale negoziabile. Quindi vendi se i prezzi raggiungono il prezzo basso (tra le 02:00 e le 10:00) - 5 pips e compri se i prezzi raggiungono il prezzo alto + 5 pips.

esempio

tra le 02:00 e le 10:00 GBPUSD prezzo basso era 1.6000, alto era 1.6050, quindi se i prezzi raggiungono 1.5995 vendere automaticamente e se il prezzo raggiunge 1.6055 comprare automaticamente mettendo 30 pips stop loss order automaticamente e 50 pips take profit.

se non hai tempo dammi solo un'indicazione su come iniziare, ho letto la lezione ma non ho pratica per fare il lavoro

grazie

 
pooh123:
Ciao, sto lavorando su un EA e continuo a ricevere un messaggio di errore durante la compilazione: "'\fine_del_programma' - parentesi sinistra sbilanciata". Di solito questo messaggio di errore è legato a un numero non equilibrato di parentesi a sinistra e a destra. Tuttavia, ho controllato i miei codici in alto e in basso e ho scoperto che ho un numero uguale di parentesi a sinistra e a destra. Quindi mi fa davvero impazzire il fatto che non riesco a capire dove sia andato storto. Qualcuno può controllare i miei codici e dirmi come risolvere il problema? Grazie mille. I miei codici sono postati qui sotto:

//+------------------------------------------------------------------+

//| Breakout.mq4 ||

//| Pooh |

//| |

//+------------------------------------------------------------------+

#proprietà copyright "Pooh"

#proprietà link ""

//--- parametri di ingresso

extern int LengthI=23;//per entrare nel mercato

extern int LengthO=7;//per uscire

extern double Lots=0.1; //per la dimensione dell'ordine

extern int N1=14; //periodo per ATR

extern int NLots=1; //numero di lotto d'ordine aumentato

//+------------------------------------------------------------------+

//|funzione di inizializzazione dell'esperto |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| funzione di deinizializzazione esperto |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| funzione di inizio esperto |

//+------------------------------------------------------------------+

int start()

{

//----

doppio HLong,LLong,HShort,LShort;

HLong=iHigh(NULL,0,iHighest(NULL,0,2,LengthI,2));

LLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2));

LShort=iLow(NULL,0,iLowest(NULL,0,1,LengthI,2));

HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2));

int cnt, cot,ticket, totale;

totale=OrdiniTotali();

se (totale<1)

{

se (iClose(NULL,0,1)>HLong)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000, "EA Long",123,0,Green);

se (ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Ordine lungo aperto : ",OrderOpenPrice());

}

altrimenti

Print("Errore nell'apertura dell'ordine lungo: ",GetLastError());

return(0);

}

se (iClose(NULL,0,1)<LShort)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red);

se (ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Ordine corto aperto:",OrderOpenPrice());

}

altrimenti Print("Errore nell'apertura dell'ordine SHORT:",GetLastError());

return(0);

}

return(0);

}

for(cnt=0;cnt<totale;cnt++)

{ //10

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

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

{

if(OrderType()==OP_BUY) // la posizione lunga è aperta

{

// deve essere chiusa?

if(Bid<=LLong)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);//chiude la posizione

return(0);

}

//modifica il trailing stop

OrderModify(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Verde);

return(0);

}

else

{

if(Ask>=HShort)

{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);//chiude la posizione

return(0);

}

//modifica il trailing stop

OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Rosso);

return(0);

}

}

}

//ottenere il totale dei lotti di ordini lunghi e corti

double LOrderLots=0;

double SOrderLots=0;

for(cnt=0,cnt<=totale,cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

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

LOrderLots=LOrderLots+OrderLots();

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

SOrderLots=LOrderLots+OrderLots();

}

//aumentare l'ordine aperto

for(cot=0,cot<=totale,cot++)

{ //1

//aggiungere posizione per ordine lungo

if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==true) //se ci sono ordini aperti

{ if(OrderMagicNumber==123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2- se l'ordine aperto è stato aperto da EA pooh abd type è Long

{ //3

for(int i=1;i<=15;i++)

{ if(Bid>=OrderOpenPrice()+i*0.5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0.5*iATR(NULL,0,N1,0))&&LOrderLots<Lots*(i+1)) //4

{ ticket=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000, "EA Long",123,0,Green); //5

se (ticket>0)

{ //6

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Ordine lungo aperto : ",OrderOpenPrice());

} //6

altrimenti

Print("Errore nell'apertura dell'ordine lungo: ",GetLastError());

break;

} //5

} //4

return(0);

//aggiungere posizione per ordine breve

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

{ //7

for(int n2=1;n2<=15;n2++)

{ if(Ask(OrderOpenPrice()-(n2+1)*0.5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8

{ ticket=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red); //9

se (biglietto>0)

{ // 10

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Stampa("Ordine corto aperto : ",OrderOpenPrice());

} // 10

altrimenti

Print("Errore nell'apertura dell'ordine breve: ",GetLastError());

break;

} //9

} //8

return(0);

} //7

} //3

} //2

} //1

return(0)

}

[lang=pl]Ciao c'è stato qualche errore, due ")" sbilanciati nella funzione OrderMagicNumer dovresti usare () alla fine. Nel ciclo for dovresti usare ";" invece di ",".

Se hai bisogno di trovare le parentesi sbilanciate ti consiglio Notepad ++ [/lang]

File:
eamod.mq4  5 kb