Gogetter EA - pagina 2

 
Maji:
Sinceramente, non sono sicuro di poterti aiutare. In primo luogo perché devo spendere del tempo per farlo, e in questo momento sono un po' a corto di tempo per me. Secondo perché fino ad ora ho lasciato che gli "indicatori" facessero tutti i disegni e non ho mai usato gli EA per farlo. È possibile e penso che la teoria sia la stessa.

Credo che Codersguru abbia scritto un capitolo sul disegno di linee, frecce ecc. Prova a leggerlo

Di nuovo, il copia e incolla richiede comunque che tu capisca cosa stai facendo. Non c'è niente come l'auto-aiuto e tu stai dimostrando questo punto molto bene. Continua il tuo duro lavoro.

Ok, mi hai beccato, accetto qualche credito per il duro lavoro. TGIF! Sono stato un uomo ossessionato da questo. Mi merito una pausa.

La cosa con il disegno usando gli indicatori... non mi interessa davvero come viene realizzato (fino a un certo punto) solo che viene realizzato... se un indicatore può essere fatto che mette le frecce sul grafico per le aperture e le chiusure suppongo che funzionerebbe anche quello... trovo che il mio conto live disegna tutto nel tester tutto da solo senza che io gli dica di fare nulla... il mio conto demo d'altra parte... ha problemi

Sono più preoccupato per la tempistica del trading multiplo...questo migliora se uso la "modalità tick"? L'ho osservato nel test in avanti e fa un trade per barra, che può mettere i trade molto distanti tra loro in termini di pip DOPO il segnale. Se devo aprire 5 posizioni su un segnale, voglio che siano sul segnale, non sparse in mezz'ora dopo il segnale...(rolleyes)

 

Build 1.01 -longs

Questo ha un segnale su cui ho lavorato un po' che funziona. Ci sono ora alcune differenze con il gogetshorts con le medie mobili utilizzate e alcune della logica del segnale ... ho preso il segnale dal gogetter originale che stava lavorando su longs e ci ho giocato un po' di più.

Questo ama il GPB/USD 5mTF meglio. Si blocca praticamente sugli altri time frame.

Divertitevi, per favore postate i vostri risultati/problemi ecc.

File:
 
eric79:
Ciao Congratulazioni per la curva dall'aspetto gradevole. Penso che una cosa che potrebbe essere migliorata è la qualità di modellazione del test. Il 90% sarebbe meglio.

Ci vado molto vicino con il GGs 2.11

Non sono abituato a usare i numeri di versione e di build... essendo questa la mia prima impresa... Questo è stato aggiunto da Graham dal forum factoid... è una cosa in più di cui tenere traccia....questi dovrebbero avere l'attuale build e i numeri di versione nella finestra del grafico ora... stesse logiche e codice solo migliori cosmetici.

Li sto lasciando entrambi in prova in demo mentre lavoriamo sui miglioramenti.

 

Vorrei ancora sviluppare ulteriori segnali di entrata e parametri all'interno di questi...

 

Trovo davvero strano quando qualcosa funziona un giorno e non funziona il giorno dopo e non ho fatto nessun cambiamento che io possa vedere...

il mio EA nello strategy tester ora NON risponde quando cambio l'impostazione 'maxopentrade'... usa due trade non importa cosa, se gli dico '0' usa ancora due trade... prima funzionava bene anche oggi e ora improvvisamente ha deciso che permetterà sempre due trade aperti, non importa cosa gli dico....

la settimana scorsa, se gli dicevo di permettere 5 operazioni in una volta, ne permetteva 5 in una volta sola e quando gli dicevo di permettere 1 operazione in una volta sola, ne permetteva una sola .... L'ho VISTO funzionare!

Ora non riesco a farlo funzionare per salvarmi. cosa succede?

Ho pensato che forse avevo perso una parentesi o qualcosa sulla linea if MaxOpenTrade...

TradeSettings();

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

if(OrdersTotal() < MaxOpenTrade)

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0); [/PHP]

so I changed it to this...

[PHP] TradeSettings();

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

if(OrdersTotal() < MaxOpenTrade){

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

nessun miglioramento, ignora ancora il controllo MaxOpenTrade.

Ok, aiuta se tengo traccia di quale segnale dei due sto cambiando....lol se sto usando solo il segnale #2 e cambiando l'impostazione del segnale #1, ha senso, no?

Sì, sto perdendo le mie biglie.

 
for (int o = 0; o <= MaxOpenTrade; o ++)

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

return(0);

quello che questo non fa è modificare gli ordini allo stesso tempo... Immagino di dover fare qualcosa di simile con la funzione di modifica degli ordini in modo che anche loro si modifichino tutti allo stesso tempo...

 

Non sono sicuro, ma non credo che sia il modo giusto per fare quello che volete fare.

Usate la seguente funzione:

int CountTrades()

{

int count=0;

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)

continue;

if(OrderSymbol()==Symbol()||OrderMagicNumber()==MagicNumber)

if((OrderType()==OP_SELL) || (OrderType()==OP_BUY))

count++;

}//for

return(count);

}

Ora chiamala nel tuo programma come

if CountTrades<MaxTrades allora....

Inoltre, sbarazzati dell'abitudine di contare verso l'alto in un ciclo "for" e usa uno stile di conteggio alla rovescia. Sarà utile quando cercherai di chiudere le compravendite e in generale risulterà in uno stile di codifica più coerente.

Buona fortuna.

 

Ok, l'ho fatto, ho aggiornato tutto nell'EA GGlongs con la funzione CountTrades(), anche la precedente CloseAll() che hai fatto prima e che usava OrdersTotal()... Quindi TUTTO in questa particolare build ora sta contando alla rovescia invece di contare verso l'alto, chiamo quella funzione molto spesso.

L'EA ora sembra funzionare bene per aprire più ordini allo stesso tempo e per s/l o t/p allo stesso tempo...

modificarli invece....che è irrazionale e non li modifica tutti allo stesso tempo...

for (int t = 0; t < MaxOpenTrade; t ++)

if(CountTrades() < MaxOpenTrade)

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

return(0);

if (!EachTickMode) BarCount = Bars;

[/PHP]

something about this doesn't work right...however when I do this although it becomes crazy it ends up being more profitable...

this is the code for the 'altered' version that corresponds to the test reports below...when it's like this basically it doesn't modify anything at all....

//Trailing stop for long position

if(TrailingStopMode && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop || OrderOpenPrice() - Bid >= 0) { //below trigger the Ilevel==Ask

if(OrderStopLoss() < Bid - Point * TrailingStop || OrderStopLoss() == 0) {

for (int t = 0; t < MaxOpenTrade; t ++)

if(CountTrades() < MaxOpenTrade)

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

return(0);

if (!EachTickMode) BarCount = Bars;

TrailingStopMode = False; //resets mode after each order

StopLossMode = False; //resets mode after each order

continue;

this is the code that corresponds to the 'unaltered' reports below... This modifys but not as I imagine it should doing them all at the same time....

[PHP]//Trailing stop for long position

if(TrailingStopMode && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop || OrderOpenPrice() - Bid >= 0) { //below trigger the Ilevel==Ask

if(OrderStopLoss() < Bid - Point * TrailingStop || OrderStopLoss() == 0) {

//for (int t = 0; t < MaxOpenTrade; t ++)

//if(CountTrades() < MaxOpenTrade)

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

//return(0);

if (!EachTickMode) BarCount = Bars;

TrailingStopMode = False; //resets mode after each order

StopLossMode = False; //resets mode after each order

continue;

anche se non mi piace il modo in cui si sta modificando secondo il rapporto, è comunque molto più redditizio....

Mi piacerebbe essere in grado di controllare la modifica per farlo come voglio io, solo per sapere che posso. Forse alla fine è meglio lasciarlo così, ma voglio sapere come fare per modificarli tutti allo stesso tempo come sta facendo con l'apertura e la chiusura.

 

Ora, ora, ora... sei arrivato fin qui... quindi pensaci bene... hai il codice di counttrades, quindi perché non modificarlo per fare le modifiche agli ordini... qualcosa del genere...

int ModifyTrades()

{

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)

continue;

if(OrderSymbol()==Symbol()||OrderMagicNumber()==MagicNumber)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen); /etc.

}//for

}

Hai le basi, e ora tocca a te capire il resto.

Buona fortuna.

 
Maji:
Ora, ora, ora... sei arrivato fin qui... quindi pensaci bene... hai il codice di counttrades, quindi perché non modificarlo per fare le modifiche agli ordini... qualcosa del genere...

int ModifyTrades()

{

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)

continue;

if(OrderSymbol()==Symbol()||OrderMagicNumber()==MagicNumber)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen); /etc.

}//for

}

Hai le basi, e ora tocca a te capire il resto.

Buona fortuna.

che funziona... vedi allegato...

il file .htm era troppo grande per essere caricato... basta dire che modifica ogni ordine contando in basso allo stesso tempo.... è anche ragionevolmente redditizio non male per questo maledetto segnale.

File:
Motivazione: