Come codificare? - pagina 60

 

Grazie Kalenzo,

Ho provato con OP_BUYLIMIT ma non funziona.

Proverò con OP_BUYSTOP.

 

domanda veloce di codifica

Come si fa a mettere una linea orizzontale sullo schermo al valore medio (di tutti i prezzi di chiusura)? C'è un codice specifico per questo?

 

semplice breakout EA

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

//| SimpleBreakoutEA.mq4 |

//| |

//| |

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

#property copyright "jjk2"

#property link ""

//---- input parameters

extern int ____TIME_RANGE____;

extern int TimeRange = 1; // # of Hours to look back from TimeEnd. ex) if breakout is @ 22:00 GMT to 23:00 GMT. Total TimeRange to lookback is 8 hrs.

extern int TimeBegin = 22;

extern int TimeEnd = 23;

extern int CancelTime = 20; // ALL REMAINING ORDERS WILL BE CANCELED AT THIS INDICATED TIME.

extern int ______FILTERS______;

extern int TriggerFilter = 0;

extern bool AllowBreakEven = True;

extern int ______ORDERS______;

extern double Lots = 0.1;

extern int StopLoss = 50;

extern int TakeProfit = 100;

extern int Slippage = 2;

extern int MagicNumber = 23423;

int init()

{

return(0);

}

int deinit()

{

return(0);

}

int start()

{

// OPEN ORDERS @ HIGH/LOW from TIMEBEGIN to TimeEND

if (Hour() >= TimeBegin-1 && Hour() >= TimeEnd)

{

int HH = iHighest(NULL, 0, MODE_HIGH,TimeRange,0);

int LL = iLowest(NULL, 0, MODE_LOW,TimeRange,0);

}

double SL_High = Ask - (StopLoss * Point);

double SL_Low = Bid + (StopLoss*Point);

double TP_High = Ask + (TakeProfit*Point);

double TP_Low = Bid - (TakeProfit*Point);

if ( Ask > HH + TriggerFilter) OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, SL_High, TP_High, "Breakout Buy", MagicNumber, NULL, Blue);

if ( Bid < LL + TriggerFilter) OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, SL_Low, TP_Low, "Breakout Sell", MagicNumber, NULL, Red);

// MOVE SL @ BreakEven if allowed. MarketPrice distance Open Price > stop*point, then stop must equal to MarketPrice - Stop*point as new stoploss.

int total = 0;

if ( AllowBreakEven == True )

{

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

{

OrderSelect(total, SELECT_BY_POS);

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

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - SL_High*Point, OrderTakeProfit(),0, CLR_NONE);

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

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + SL_Low*Point , OrderTakeProfit(),0, CLR_NONE);

}

}

return(0);

}

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

per qualche ragione non funziona .... qualcuno sa perché?

 
 

Come trasformare un indicatore in EA?

Ciao, posso sapere come trasformare un indicatore in EA?

Molti indicatori hanno il segno della freccia quando si tratta di certe condizioni e vorrei testarli con l'EA.

Vorrei che l'EA prendesse il commercio secondo la freccia formata.

Qualcuno può aiutarmi? Grazie.

 

Questo è secondo il segno della freccia

https://www.mql5.com/en/forum/173249/page51

 

Che dire di trasformare l'indicatore allegato in EA?

Qualcuno può aiutare? Grazie.

 
File:
envelopes.mq4  3 kb
 

Struttura del codice

Salve,

Sono nuovo di Metatrader ma molto esperto di programmazione. Ho creato alcuni esempi di Expert Advisors e alcuni indicatori leggermente complicati in MT. Quello che non è chiaro è come strutturare un EA piuttosto complicato. Voglio che l'EA chiami alcune funzioni di "segnale" per controllare diverse condizioni di setup.

Come dovrei codificare queste funzioni?

1. Come funzioni "inline" nell'EA

2. Come indicatori "separati" che restituiscono un valore invece di scrivere sullo schermo?

3. qualche altra funzione "separata" da chiamare come chiamare iMA

Se scelgo l'alternativa 1, la funzione inline nell'EA può scorrere le ultime 200 barre usando Close e chiamare iMA?

L'alternativa 2 va bene? Quando si codifica un indicatore vengono elaborate tutte le barre "disponibili", il che ovviamente non è necessario per l'EA.

L'alternativa 3 mi sembra la scelta più logica, ma non sono sicuro di come strutturarla in modo che funzioni in backtesting e cosa devo passarle e a cosa ha accesso la funzione per default, come per esempio Close

Come esempio di ciò che ho bisogno di stabilire nella funzione "segnale" è qual è il trend attuale e quando è iniziato. L'ho codificato in un indicatore quindi so come fare il codice vero e proprio.

Grato per qualsiasi consiglio.

Ingvar

 
ingvar_e:
Ciao,

Sono nuovo di Metatrader ma molto esperto di programmazione. Ho creato alcuni esempi di Expert Advisors e alcuni indicatori leggermente complicati in MT. Quello che non è chiaro è come strutturare un EA piuttosto complicato. Voglio che l'EA chiami alcune funzioni di "segnale" per controllare diverse condizioni di setup.

Come dovrei codificare queste funzioni?

1. Come funzioni "inline" nell'EA

2. Come indicatori "separati" che restituiscono un valore invece di scrivere sullo schermo?

3. qualche altra funzione "separata" da chiamare come chiamare iMA

Se scelgo l'alternativa 1, la funzione inline nell'EA può scorrere le ultime 200 barre usando Close e chiamare iMA?

L'alternativa 2 va bene? Quando si codifica un indicatore vengono elaborate tutte le barre "disponibili", il che ovviamente non è necessario per l'EA.

L'alternativa 3 mi sembra la scelta più logica, ma non sono sicuro di come strutturarla in modo che funzioni in backtesting e cosa devo passarle e a cosa ha accesso la funzione per default, come per esempio Close

Come esempio di ciò che ho bisogno di stabilire nella funzione "segnale" è qual è il trend attuale e quando è iniziato. L'ho codificato in un indicatore quindi so come fare il codice vero e proprio.

Grato per qualsiasi consiglio.

Ingvar

Probabilmente sapete già come fare questo, quindi scusate se lo sapete.

Media mobile della barra corrente:

iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0);

Media mobile di 200 barre fa.

iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,200);

Puoi chiamare la media mobile da qualsiasi barra tu voglia, dalla corrente a qualsiasi barra del passato.

Motivazione: