Come codificare? - pagina 97

 
matrixebiz:
Ok, lo proverò quando torno a casa, ma allora perché funziona ancora con gli ordini Buy? Grazie

Potresti essere in un ordine di vendita, ma il prezzo soddisfa la condizione per il codice di cambiamento dello stop Buy, quindi viene cambiato, e non soddisfa più le condizioni per la sezione Sell, quindi non viene cambiato lì.

Grande essere

 

Grazie Big Be per il tuo aiuto ma mi sono appena reso conto che il mio vecchio codice funziona ma devo abilitare l'uso di uno StopLoss per gli ordini SELL per essere modificato.

Strano, non ho bisogno di abilitare un TakeProfit per MoveStopOnce per lavorare con un ordine BUY ma devo abilitare uno StopLoss per MoveStopOnce per modificare l'ordine SELL.

Oh, beh, dovrò guardare il codice un po' più a fondo per capirlo, a meno che tu non sappia perché.

EDIT: se si cambia in;

if(0 < OrderOpenPrice() - Point * MoveStopTo) {

[/code]

instead of;

[code]

if(OrderStopLoss() < OrderOpenPrice() - Point * MoveStopTo) {

Sembra funzionare bene.

Grazie

 

Bisogno di aiuto con il calcolatore di posizione

OK,

quindi sto costruendo un calcolatore di posizione di dimensionamento come funzione basata sulla "Formula Kelly"

(Win Rate-((1-Win Rate)/(Avg Win/Avg Loss)

Ho tutto il codice e i calcoli che funzionano con gli input manuali (extern) per le variabili richieste e ora sto cercando di far funzionare la funzione in modo dinamico chiamando certe informazioni sul conto (in particolare voglio calcolare il tasso di consistenza vincente (%), il numero medio di pip per trade vincente e il numero medio di pip per trade in perdita)

Potrei usare qualsiasi aiuto per far funzionare le tre funzioni (WinRate AvgWin & AvgLoss). Ho usato la variazione di input manuale per mesi e funziona alla grande. Ecco il codice completo per questa versione (automatica) fino a questo punto... nei test non sto ottenendo alcun output dinamico, tutto torna all'impostazione predefinita (50, 40, 20). L'uso dei frattali è intenzionale in modo da sfruttare la massima crescita del conto (o la minima perdita). come nota la maggior parte dei broker che offrono la piattaforma MT trader permettono il trading frattale sia per lotti mini che std. Questo si rivelerà pieno uso in futuro con la gestione del denaro che può togliere posizioni di lotto parziale (cioè: rimuovere il 25% di 1 Lotto). comunque ...

al fine di raccogliere le informazioni sul conto in tempo reale di cui ho bisogno sto cercando di ...

1. contare tutti i trade

2. contare le operazioni che sono redditizie

ecc. ecc.

Posso o non posso andare su questo modo giusto.

Grazie in anticipo per tutto l'aiuto...

SeaWolf

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

//| KellyFormula.mq4 |

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

#proprietà copyright "seawolf"

#proprietà link "seawolf"

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

//| INGRESSO INFORMAZIONI ESTERNE |

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

extern int MyAccount = 1001; //------>>>> ID account

extern int ExpertID = 500001; //------>>>> Numero magico per questo EA

extern double PipValue= 1.00; //------>>>> usare per tutti i calcoli

extern double LotCost= 50.0; //------>>>> usare per tutti i calcoli

extern double PercentMax= 24.0; //------>>>> max % conto con leva @ una volta

extern int TradesMax= 3; //------>>>> max operazioni simultanee (esempio: 24%/3 operazioni = 8% per operazione)

extern bool UseKelly= true; //------>>>> manuale per la modifica dell'override

extern double ManualLots= 1.0; //------>>>> # lotti se "UseKelly" è falso

extern double mWinRate= 50.00; //------>>>> consistenza della vincita in % (overide manuale)

extern int mAvgWin= 40; //------>>>> media # pip per operazione vincente (modifica manuale)

extern int mAvgLoss= 20; //------>>>> media # pip per operazione in perdita (modifica manuale)

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

//| funzione di inizializzazione dell'esperto |

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

int init()

{

//----

//----

return(0);

}

int deinit()

{

//----

//----

return(0);

}

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

//| funzione di avvio esperto |

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

int start()

{

//----

PositionSize();

{

Print("Lots=",PositionSize()," WinRate=",WinRate()," AvgWin=",AvgWin()," AvgLoss=",AvgLoss());

}

Comment("L'ora corrente è ",TimeToStr(TimeCurrent(),TIME_MINUTES)," GMT ",TimeToStr(TimeCurrent(),TIME_DATE)," ... Win Rate= ",WinRate()," Avg Win= ",AvgWin()," Avg Loss= ",AvgLoss());

//----

return(0);

}

//----

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

//| CALCOLA LA DIMENSIONE DELLA POSIZIONE PER TUTTE LE NUOVE TRANSAZIONI |

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

//------------------------>>>>

doppio PositionSize()

{

//------------------------>>>> NON USARE LA FORMULA DI KELLY, USARE IL TASSO FISSO

if(UseKelly == true)

{

double KelyForm = WinRate()-((1-WinRate())/(AvgWin()/AvgLoss());

doppio PerTrade;

doppio Lotti;

se(KelyForm > PercentMax)

{

PerTrade = (PercentMax/10)/TradesMax;

}

altrimenti se(KelyForm < PercentMax)

{

PerTrade = (KelyForm/10)/TradesMax;

}

else if(KelyForm == PercentMax)

{

PerTrade = (KelyForm/10)/TradesMax;

}

Lotti = (PerTrade * AccountBalance()/LotCost);

return(MathRound(Lots)/10);

}

}

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

//| RACCOGLIERE INFORMAZIONI SUL CONTO IN TEMPO REALE |

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

//------------------------>>>>

doppio WinRate()

{

doppio Biglietto;

double CountWins = 0;

for(Ticket=0;Ticket<OrdiniTotali();Ticket++)

{

OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY);

if(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)

{

//------>>>>

if(OrderType()==OP_BUY)

{

if(OrderClosePrice() >= OrderOpenPrice())

CountWins++;

}

else if(OrderType()==OP_SELL)

{

se(OrderClosePrice() <= OrderOpenPrice())

CountWins++;

}

}

}

if(CountWins > 0)

return(MathRound(CountWins/OrdersHistoryTotal())*10);

altrimenti

Print("WinRate in tempo reale non disponibile");

return(mWinRate);

}

//------>>>>

//------------------------>>>>

doppio AvgWin()

{

doppio Biglietto;

double CountTrades = 0;

doppio CountPips = 0;

for(Ticket=0;Ticket<OrdiniTotali();Ticket++)

{

OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY);

if(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)

{

//------>>>>

if(OrderType()==OP_BUY && OrderClosePrice()>=OrderOpenPrice())

CountTrades++;

{

se(OrderProfit() >= 0)

CountPips++;

}

if(OrderType()==OP_SELL && OrderClosePrice()<=OrderOpenPrice())

CountTrades++;

{

se(OrderProfit() >= 0)

CountPips++;

}

}

}

if(CountPips > 0)

return(MathRound(CountPips/CountTrades)*10);

altrimenti

Print("Real Time AvgWin not Available");

return(mAvgWin);

}

//------>>>>

//------------------------>>>>

doppio AvgLoss()

{

doppio Ticket;

double CountTrades = 0;

doppio CountPips = 0;

for(Ticket=0;Ticket<OrdiniTotali();Ticket++)

{

OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY);

if(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)

{

//------>>>>

if(OrderType()==OP_BUY && OrderClosePrice()<OrderOpenPrice())

CountTrades++;

{

if(OrderProfit() < 0)

CountPips++;

}

if(OrderType()==OP_SELL && OrderClosePrice()>OrderOpenPrice())

CountTrades++;

{

if(OrderProfit() < 0)

CountPips++;

}

}

}

if(CountPips > 0)

return(MathRound(CountPips/CountTrades)*10);

altrimenti

Print("Real Time AvgLoss not Available");

return(mAvgLoss);

}

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

 

A: Matrixebiz

EDIT: if you change to;

if(0 < OrderOpenPrice() - Point * MoveStopTo) {

[/code]

instead of;

[code]

if(OrderStopLoss() < OrderOpenPrice() - Point * MoveStopTo) {

Sembra funzionare bene.

Grazie

Non c'è di che.

Grande essere

 

Fxpro, chiedere

Ciao a tutti... voglio solo chiedere come configurare i lotti EA in FxPro.

sono confuso perché ha 6 cifre (1 cifra extra) ho fissato il S/L e T/P ma non posso cambiare il lotto ...

sempre 0.4 per trade... anche se lo cambio a 0.1 o 0.3

Ho usato 10 punti 3 EA...

Per favore aiutatemi... email me a hansen_hardrocker@yahoo.co.id

o può PM per favore ...

cheerz tutti ...

 

Lotto Ask_change (fxpro)

Fxpro, chiedere

Ciao a tutti... voglio solo chiedere come configurare i lotti EA in FxPro...

sono confuso perché ha 6 cifre (1 cifra extra) ho fissato il S/L e T/P ma non posso cambiare il lotto ...

sempre 0.4 per trade... anche se lo cambio a 0.1 o 0.3

Ho usato 10 punti 3 EA...

Per favore aiutatemi... email me a hansen_hardrocker@yahoo.co.id

o può PM per favore ...

cheerz tutti ...

 

Lo voglio anch'io. per favore mandami a omidchart@yahoo.com

 

Probabilmente perché hai abilitato il Money Management nell'EA.

 

Grazie

matrixebiz:
Probabilmente perché hai abilitato il Money Management nell'EA.

Thx fratello ..

Sono un principiante...

 

Puoi cambiare questo EA?

Ciao programmatori,

Ho questo EA che piazza ordini stop sopra e sotto il prezzo corrente. Quello di cui ho bisogno è un EA che piazzi ordini limite invece di ordini stop sopra e sotto il prezzo corrente. È possibile modificare questo EA per fare proprio questo mantenendo tutti i parametri uguali?

Grazie in anticipo,

Paul

File:
Motivazione: