Come codificare? - pagina 34

 

Ho bisogno di aiuto per modificare una parte di EuroX2_sl EA .......

Ciao a tutti i programmatori,

Sono nuovo nel commercio del forex e nuovo anche in questo forum. La prima volta, sto imparando è 10 punti 3 poi, EuroX2_sl, esteso da 10 punti 3 EA script. Dopo aver fatto alcuni test in avanti, per me questo EA è abbastanza ok per i principianti come me per imparare. Durante il test, ha aperto bene la posizione, ma non ha chiuso la posizione come ho bisogno (anche se ho già una condizione) quando il mercato si inverte o quando la tendenza cambia. Forse c'è qualcosa di sbagliato nel codice (perché non sono un programmatore) e credo di aver bisogno dell'aiuto di qualcuno di voi per risolverlo. Potreste controllare quale parte potrebbe essere sbagliata?

Penso che la posizione APERTA sia ok in quanto fa profitto ma il problema è con la POSIZIONE CHIUSA in quanto non chiude (COMPRA o VENDE) anche quando l'indicatore esiste e questo fa sì che le perdite fluttuanti siano piuttosto alte.......

Chiunque sia a conoscenza di questo, per favore mi aiuti a modificare questo codice.......

Il codice che ho fatto è :

-------- parte dello script da EuroX2_sl esteso da 10 punti 3 come penso sia per chiudere la posizione -------

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

// è importante entrare nel mercato correttamente,

// ma è ancora più importante uscirne correttamente...

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

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && // controlla la posizione aperta

OrderType()<=OP_BUY &&

OrderType()>=OP_SELL &&

TipoOrdine()>=OP_BUY &&

OrderSymbol()==Symbol()) // controllare il simbolo

{

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

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

{

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

//+ CONDIZIONE DI CHIUSURA DELLA POSIZIONE

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

//+--------------- CHIUDERE POSIZIONE BUY ----------------------------

if ( Stoch_Main_M15_Cu < Stoch_Sig_M15_Cu )

//+ stocastico principale < segnale stocastico

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

{

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

return(0); // uscire

}

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

//controllare il trailing stop

se(TrailingStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

}

}

//+---------------CLOSE VENDERE LA POSIZIONE --------------------------------

else // vai alla posizione short

{ //+ NON RIMUOVERE

if(OrderType()==OP_SELL) // la posizione short è aperta

{

}

// deve essere chiusa?

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

if ( Stoch_Main_M15_Cu > Stoch_Sig_M15_Cu )

//+ stocastico principale > segnale stocastico

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

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; // chiudere la posizione

return(0); // uscire

}

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

//controllare il trailing stop

se(TrailingStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

se((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Poi nt*TrailingStop,OrderTakeProfit(),0,Red);

return(0);

}

}

}

}

}

}

--------------------------------------------------------------

Grazie,

fxgroup

 

Quali sono i migliori indicatori a termine settimanale/giornaliero

Questa domanda potrebbe essere rivolta a trader esperti.

Quali sono gli indicatori affidabili (già testati) che potrebbero darci un'idea del principale movimento di tendenza durante:

1- Settimana futura

2- Giorno futuro (o giorno successivo)

Sapendo che non sto chiedendo livelli di ingresso B/S.

Nota: Penso che una volta definita la direzione del movimento per la prossima settimana, possiamo costruire una base per quando entrare.

Grazie

 

domanda mql

Codice:

// se abbiamo aperto delle posizioni ci occupiamo di esse

//con modifica dello stoploss

cnt=OrdiniTotali();

mentre(cnt>=0)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) // && Reversed==False)

{

Print("Ticket ",OrderTicket()," modified.");// perché è scritto qui prima di modificare gli ordini (come ho capito)?

if (OrderType()==OP_SELL)

{

se (TrailingStop>0)

{

se ((OrderOpenPrice()-Ask)>=(TrailingStop*Point+Pips*Point))

{

se (OrderStopLoss()>(Ask+Point*TrailingStop) || OrderStopLoss()==0)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderClosePrice()-TakeProfit*Point-TrailingStop*Point,0,Purple);

return(0);

Salve a tutti, qualcuno potrebbe spiegarmi perché :Print("Ticket ",OrderTicket()," modified."); viene scritto prima di modificare l'ordine. Da quanto ho capito, stamperà"biglietto d'ordine modificato" anche se non è stato modificato. È un pezzo di codice terminatore.

Grazie.

 
Flytox:
Codice:

// se abbiamo aperto delle posizioni ce ne occupiamo

//con modifica dello stoploss

cnt=OrdiniTotali();

while(cnt>=0)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) // && Reversed==False)

{

Print("Ticket ",OrderTicket()," modified.");// perché è scritto qui prima di modificare gli ordini (come ho capito)?

if (OrderType()==OP_SELL)

{

se (TrailingStop>0)

{

se ((OrderOpenPrice()-Ask)>=(TrailingStop*Point+Pips*Point))

{

se (OrderStopLoss()>(Ask+Point*TrailingStop) || OrderStopLoss()==0)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderClosePrice()-TakeProfit*Point-TrailingStop*Point,0,Purple);

return(0);

Ciao a tutti, qualcuno potrebbe spiegarmi perché :Print("Ticket ",OrderTicket()," modified."); viene scritto prima di modificare l'ordine. Da quanto ho capito, stamperà "biglietto d'ordine modificato" anche se non è stato modificato. È un pezzo di codice terminatore.

Grazie.

Hai ragione, dovrebbe essere scritto dopo la modifica o il messaggio dovrebbe essere: "Trying to modify order : ",OrderTicket()

 

grazie Kalenzo, sto imparando mql e i tuoi articoli e le tue risposte sono molto utili, grazie ancora.

 

Potrebbe essere sufficiente se fate le seguenti quattro modifiche:

1. Commentare la linea 102, per essere

//IsTrade = True;[/PHP]

2. Change blank line 104 to be

if ( Bid > OrderOpenPrice() - GAP * Point ) IsTrade = true;

3. Change blank line 120 to be

[PHP]if ( Ask < OrderOPenPrice() + GAP * Point ) IsTrade = true;

4. Aggiungere la variabile "GAP" (extern int), che è il numero impostato di pip in cui la "copertura" dovrebbe entrare.

Tuttavia, qualcuno ha fatto notare prima da qualche parte in questo forum, che non si può davvero "coprire" nello stesso simbolo; è praticamente lo stesso che prendere la perdita. Forse è meglio prendere la perdita e poi tornare quando il prezzo si inverte di nuovo....

 
ralph.ronnquist:
Potrebbe essere sufficiente se fai le seguenti quattro modifiche:

1. Commentare la linea 102, per essere

//IsTrade = True;[/PHP]

2. Change blank line 104 to be

if ( Bid > OrderOpenPrice() - GAP * Point ) IsTrade = true;

3. Change blank line 120 to be

[PHP]if ( Ask < OrderOPenPrice() + GAP * Point ) IsTrade = true;

4. Aggiungere la variabile "GAP" (extern int), che è il numero impostato di pip in cui la "copertura" dovrebbe entrare.

Anche se, qualcuno ha fatto notare prima da qualche parte in questo forum, che non si può davvero "coprire" nello stesso simbolo; è praticamente lo stesso che prendere la perdita. Forse è meglio prendere la perdita e poi tornare quando il prezzo si inverte di nuovo....

Non ha aiutato. E, per essere più specifici, quello che voglio che il mio EA faccia è il seguente:

L'EA inserirà un trade di acquisto/vendita in base a certe condizioni. Una volta inserito il trade iniziale, a volte ci possono volere da tre a cinque giorni prima che si chiuda finalmente a takeprofit. Nel frattempo, durante quel periodo da tre a cinque giorni, ci possono essere diverse opportunità di trading nella direzione opposta. Voglio che l'EA approfitti di queste opportunità lasciando aperto il trade originale perché alla fine chiuderà in profitto. Queste opportunità di trading aggiuntive nella direzione opposta a quella del trade originale saranno tecnicamente una copertura contro il trade originale, anche se alla fine chiuderanno anch'esse in takeprofit. Per essere chiari, però, voglio che l'EA abbia solo un trade aperto nella stessa direzione. Quindi, il massimo delle operazioni aperte allo stesso tempo sarebbe un acquisto e una vendita.

Spero che questo aiuti!

Grazie per la tua risposta

 

Hmm; Non ho provato il tuo EA, ma leggendo la logica, mi sembra che l'unica cosa che ferma un successivo Sell dopo un Buy è che "IsTrade" sia vero. (A parte il fatto che non aprirà una vendita nello stesso momento in cui apre un acquisto)

Quindi, se vuoi che la logica di vendita si applichi incondizionatamente, avrei pensato che la mia modifica (1) solo -- dimentica 2-4 -- avrebbe fatto il trucco. Oppure rimuovere la logica "IsTrade".

Tuttavia, c'è la logica subordinata con "TickCheck" e "BarCount", che ferma un altro trade allo stesso tick o alla stessa barra, ma presumo che tu voglia che si applichi ancora.

Naturalmente non posso dire molto sulla parte di segnalazione, che hai omesso. Ad esempio, se sollevando un "Sell_Signal" si tiene conto dei "BuyOrders", allora c'è altro da fare.

 

Rendere la codifica interessante

Prima di premere BACK, potreste aiutarmi?

Sono nuovo nella codifica degli indicatori, ma so come codificare gli EA. Non al 100%, ma abbastanza bene.

Comunque, mi chiedevo se qualcuno gentile potesse aiutarmi.

Potreste spiegarmi ogni linea e darmi un esempio.

p.s. È una parte di un codice per MACD:

int start()

{

int limit;//what does Limit equal,0?

int counted_bars=IndicatorCounted();

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---- macd counted in the 1-st buffer

for(int i=0; i<limit; i++)//i<0?

MacdBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

//---- signal line counted in the 2-nd buffer

for(i=0; i<limit; i++)

SignalBuffer=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);

//---- done

return(0);

}

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

Sarei molto felice se qualcuno o più persone mi aiutassero, e mi dessero suggerimenti per la codifica degli indicatori, o qualcosa del genere.

Grazie,

Dan.

 

Come eseguire uno script all'interno di un EA?

Ciao,

Vorrei sapere come eseguire uno script nella directory script all'interno di un EA.

Se (condizione vera)

{

Esegui lo script;

}

Thx in anticipo

Saluti

Jimmy

Motivazione: