Come codificare? - pagina 164

 
MiniMe:
Grazie Ralph, ma mi mancherebbe lo swap, e voglio includere il profitto/perdita dello swap nella decisione di chiusura degli ordini

Ma il primo ciclo accumula sia il profitto che lo swap, vero?

Stavo pensando che la cifra dell'Equity è quella da confrontare con ciò che 5 pips significherebbe per i lotti aperti.... e quindi non c'è bisogno di calcolare effettivamente il prezzo di pareggio.

 

Ciao Ralph

Ho 3 variabili

OrdLots ; in lotti e rappresentano i lotti aperti ma questo salterà lo swap

Equity ; questa è la perdita di profitto totale e questo includerà lo swap

MinPro ; questo è il mio take profit che è di 5 pips + il punto di pareggio

Non posso usare OrdLots per trovare il profitto/perdita in pip perché questo salterà lo swap

Non posso usare Equity per trovare il profitto/perdita in pip perché per questo ho bisogno di sapere quanti lotti sono usati, ma il mio calcolo per i lotti salta lo swap

In qualche modo ho bisogno di usare una funzione sia di OrdLots che di Equity per sapere quanti pip sono aperti

Ci potrebbe essere qualcosa di pronto in MT4 che riguarda il saldo del conto o il capitale del conto, ma non ho trovato nulla

La soluzione che hai proposto grazie troverà il profitto/perdita in pip senza considerare lo swap, ma ho già messo una funzione per questo ... Voglio uscire a 5 pip sopra il pareggio con lo swap

 

Confrontare i tempi e fare un ciclo

Ciao a tutti.

Sono molto inesperto con il linguaggio Mql4. Voglio confrontare l'orario di apertura con una var Int e se è più lungo di un certo tempo e gli ordini sono ancora aperti voglio aumentare la quantità di ordini aperti consentiti in modo da poter cercare di raggiungere una situazione di Breakeven o forse una situazione di profitto e poi chiudere tutti gli ordini aperti allo stesso tempo e impostare gli ordini massimi di nuovo al suo massimo consentito in origine. Qualcuno può aiutarmi o mostrarmi il codice di un altro post che già fa qualcosa del genere.

Sto usando questo codice ma sembra che non funzioni.

// Se l'ordine è aperto da molto tempo, chiudiamo l'ordine e cerchiamo di andare in pareggio

void TimeProtection()

{

int totalorders = OrdersTotal();

for(int i=totalorders-1;i>=0;i--)

{

OrderSelect(i, SELECT_BY_POS);

if ( OrderSymbol()==Symbol() )

{

prTime = OrderOpenTime();

prTime = prTime * CallTime;

se (prTime >= TimeCurrent())

{

MaxAllowable_Trades = MaxAllowable_Trades + 3;

flag = 1;

break;

}

}

}

return;

}

Vorrei davvero il tuo aiuto su questo.

Grazie

 
MiniMe:
Ciao Ralph

Ho 3 variabili

OrdLots ; in lotti e rappresentano i lotti aperti ma questo salterà lo swap

Equity ; questa è la perdita di profitto totale e questo includerà lo swap

MinPro ; questo è il mio take profit che è di 5 pips + il punto di pareggio

Non posso usare OrdLots per trovare il profitto/perdita in pip perché questo salterà lo swap

Non posso usare Equity per trovare il profitto/perdita in pip perché per questo ho bisogno di sapere quanti lotti sono usati, ma il mio calcolo per i lotti salta lo swap

In qualche modo ho bisogno di usare una funzione sia di OrdLots che di Equity per sapere quanti pip sono aperti

Ci potrebbe essere qualcosa di pronto in MT4 che riguarda il saldo del conto o l'equità del conto, ma non ne ho trovato nessuno

La soluzione che hai proposto grazie troverà il profitto/perdita in pip senza considerare lo swap, ma ho già messo una funzione per questo ... Voglio uscire a 5 pip sopra il pareggio con lo swap

Ah... forse ho capito... Quindi se accumuli anche il profitto senza swap in EquityNoSwap nel primo ciclo, allora potresti usare quello piuttosto che Equity nella mia dichiarazione "if". (?) Perché allora il test sarebbe "c'è un profitto di 5 pip rispetto al prezzo di breakeven+swap?" che in realtà è lo stesso di "c'è un profitto di 5 pip ignorando lo swap?" (o forse non ho ancora capito)

Fondamentalmente "profitti+swap" è relativo a "breakeven", e quindi "profitti" è relativo a "breakeven+swap", e "profitti" è distribuito su "OrdLots". Tutto sommato non hai ancora bisogno di determinare un prezzo effettivo in pip per il "breakeven".

 

Migliore idea di codifica EA

Sto imparando a codificare l'indicatore allegato, ma non ha funzionato, qualcuno potrebbe aiutarmi? È un indicatore molto affidabile e se qualcuno potesse fare un EA per esso, è quasi un Santo Graal.

Il principio di base è:

1.open Sell position quando appare la freccia rossa,

2. aprire una posizione di acquisto quando appare la freccia bianca e chiudere automaticamente tutte le posizioni di vendita.

3.apply per qualsiasi timeframe.

4.no stop loss,

5.add funzione di ordine.

In attesa di risposta!

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

//| IINWMARROWS.mq4

//| Basato su EMA_CROSS.mq4

//| Copyright ?2006, MetaQuotes Software Corp. |

//| Forex Trading Software: Piattaforma di Trading Forex MetaTrader 4 | //|

//| Ultima piccola modifica di Iin Zulkarnain ||

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

#proprietà copyright "Copyright 2006, MetaQuotes Software Corp.

#property link "http://www.metaquotes.net"

//----

#proprietà indicator_chart_window

#proprietà indicator_buffers 2

#proprietà indicator_color1 White

#proprietà indicatore_colore2 Rosso

#proprietà indicator_width1 2

#proprietà indicator_width2 2

//----

doppio CrossUp[];

doppio CrossDown[];

extern int FasterMode=3; //0=sma, 1=ema, 2=smma, 3=lwma

extern int FasterMA= 3;

extern int SlowerMode=3; //0=sma, 1=ema, 2=smma, 3=lwma

extern int SlowerMA= 3;

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

//| funzione di inizializzazione dell'indicatore personalizzato

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

int init()

{

//---- indicatori

SetIndexStyle(0, DRAW_ARROW, EMPTY);

SetIndexArrow(0, 233);

SetIndexBuffer(0, CrossUp);

SetIndexStyle(1, DRAW_ARROW, EMPTY);

SetIndexArrow(1, 234);

SetIndexBuffer(1, CrossDown);

//----

return(0);

}

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

//| Funzione personalizzata di deinizializzazione dell'indicatore |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Funzione di iterazione dell'indicatore personalizzato |

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

int start()

{

int limit, i, counter;

double fasterMAnow, slowerMAnow, fasterMAprevious, slowerMAprevious, fasterMAafter, slowerMAafter;

doppio Range, AvgRange;

int counted_bars=IndicatorCounted();

//---- controllo di possibili errori

if(counted_bars<0) return(-1);

//---- l'ultima barra contata sarà ricontata

if(counted_bars>0) counted_bars--;

//----

limit=Bars-counted_bars;

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

{

counter=i;

Range=0;

AvgRange=0;

for(counter=i ;counter<=i+9;counter++)

{

AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);

}

Range=AvgRange/10;

fasterMAnow=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i);

fasterMAprevious=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i+1);

fasterMAafter=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i-1);

//----

slowerMAnow=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i);

slowerMAprevious=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i+1);

slowerMAafter=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i-1);

se ((fasterMAnow > slowerMAnow) && (fasterMAprecedente slowerMAafter))

{

CrossUp=Low - Range*0.5;

}

else if ((fasterMAnow slowerMAprevious) && (fasterMAafter < slowerMAafter))

{

CrossDown=High + Range*0.5;

}

}

return(0);

}

//+------------------------------------------------------------------+questo thread per imparare a codificare correttamente, sto imparando a codificare per

 

Ai grandi e coraggiosi codificatori

qualcuno può aggiungere posizioni massime per questo EA

o lasciare che esegua una sola posizione?

grazie in anticipo

File:
reverse_1.mq4  16 kb
 

Messaggio cancellato

 

domanda fuori tema

E' possibile sniffare i dati da un programma non aperto?

Hanno un linguaggio di programmazione povero (simile a Metastock ma più povero, nessuna funzione ''precedente'' permessa), permettono solo i loro indicatori e hanno il monopolio dei dati (per legge), non è possibile scrivere un'estensione DLL per far funzionare i miei indicatori in tempo reale, ho sentito qualcosa come ''port listening function in excell'' ma non ho idea di cosa sia.

Tutti i programmatori rispondono molto apprezzato.

 

Ordine aperto per una coppia diversa

Salve,

c'è un modo per aprire un ordine per una coppia di valute diversa.

Per esempio, l'EA è in esecuzione in un grafico EURUSD, ma voglio aprire un ordine per USDJPY.

È possibile.

Grazie in anticipo

 

OrderSend("USDJPY",OP_BUY,0.1,MarketInfo("USDJPY",MODE_ASK),10,0,0, "Com",0,0,CLR_NONE);

Motivazione: