Chiedete! - pagina 142

 

Un po' di aiuto per favore con un EA

Sto cercando di chiudere un ordine di vendita e aprire un nuovo ordine di acquisto. L'acquisto si apre ma la vendita dà errore 4051

Sto usando

ticket = OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Gold);// chiude la posizione

e

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

 

Come cambiare il numero magico?

Ciao a tutti,

Uso il difference EA (copia da un EA di origine) per scambiare coppie di differenza nella finestra del grafico di differenza e vorrei cambiare il numero magico ma non so come funziona il numero magico? Potreste per favore dirmi:

1. Come funziona il numero magico?

2. Come cambiare il numero magico?

3. Posso prendere qualsiasi numero per cambiare il numero magico o DEVO usare qualche numero in alcune regole?

4. Potreste darmi un esempio per cambiare il numero magico al numero magico del mio EA: 16763?

Grazie mille per il tuo aiuto!

 

Il numero magico non è altro che un identificatore unico. Distingue ogni istanza dello stesso EA e allo stesso tempo lo distingue da qualsiasi altro EA che potresti avere in esecuzione.

Se il numero magico è una variabile esterna, cambialo con qualsiasi numero tu voglia. Assicurati solo che non sia lo stesso numero di qualsiasi altro EA in esecuzione.

Se non è una variabile esterna, allora cerca nel codice la variabile e cambiala con qualsiasi numero tu voglia.

Spero che questo aiuti.

Lux

 
luxinterior:
Il numero magico non è altro che un identificatore unico. Esso distingue ogni istanza dello stesso EA e lo distingue anche da qualsiasi altro EA che si può avere in esecuzione.

Se il numero magico è una variabile esterna, cambialo con qualsiasi numero tu voglia. Assicuratevi solo che non sia lo stesso numero di qualsiasi altro EA che avete in esecuzione.

Se non è una variabile esterna allora cerca nel codice la variabile e cambiala con qualsiasi numero tu voglia.

Spero che questo ti aiuti.

Lux

Ciao Lux,

Vuoi dire che posso cambiare il numero magico del mio EA:16763 in 16764 ; 16765 ect... ?

Grazie per la tua rapida risposta.

Luu

 
luu:
Ciao Lux,

Vuoi dire che posso cambiare il numero magico del mio EA: 16763 in 16764 ; 16765 ect... ?

Grazie per la tua rapida risposta.

Luu

Esattamente! Finché il numero è unico, non importa quale numero scegli.

Non hai davvero bisogno di cambiarlo a meno che tu non abbia una ragione specifica per farlo.

Lux

 
luxinterior:
Esattamente! Finché il numero è unico, non importa quale numero scegli.

Non hai davvero bisogno di cambiarlo a meno che tu non abbia una ragione specifica per farlo.

Lux

Grazie mille per il tuo aiuto Lux!

Luu

 

Problemi con gli ordini di chiusura EA

Amici, ho un EA con un indicatore di resistenza di supporto, l'EA deve completare gli ordini sull'obiettivo di profitto, ma a volte manca, come posso sbarazzarmi di questo problema, per favore aiutatemi.

 

Si prega di aiutare con un semplice script generico.

Ciao

Qualcuno può aiutarmi per favore con un semplice script.

Ecco di cosa ho bisogno.

Script molto generico che può essere usato su qualsiasi simbolo che metterà 3-4 ordini per SELL_STOP e BUY_STOP

Diciamo che voglio mettere un buy_stop 20 punti sopra il prezzo corrente, secondo ordine 40 punti sopra il prezzo corrente, 3d 80 punti e così via.

Stessa cosa per il Sell_Stop

Ho cercato di assemblare lo script basandomi su alcuni esempi, ma dato che non ho familiarità con il linguaggio C sto avendo qualche problema.

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""// improved.mq4

int start()

{

int ticket,i;

int cnt=1;

int Dist_SL =10; // Preset SL (pt)

int Dist_TP =100; // TP preimpostato (pt)

string Symb=Symbol(); // Symbol

RefreshRates();

double bid =MarketInfo(Symb,MODE_BID);

double ask =MarketInfo(Symb,MODE_ASK);

double point =MarketInfo(Symb,MODE_POINT);

int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);

if (Dist_TP < Min_Dist) // Se è inferiore al consentito

{

Dist_TP=Min_Dist; // Imposta il consentito

Alert(" Aumentata la distanza di TakeP = ",Dist_TP," pt");

}

//-------------------------------------------------------------------- 6 --

Alert("La richiesta è stata inviata al server. In attesa di risposta...");

for(i=100;i<400;i=i+100)

{

double TP=(ask+i*Point) + Dist_TP*Point; // Prezzo richiesto del TP

ticket=OrderSend(Symb,OP_BUYSTOP,0.1,ask+i*Point,1,(ask+i*Point)-Dist_SL*Point,TP);

Sleep(500);

int Error=GetLastError(); // Fallito

switch(Error) // Errori superabili

{

case 130:Alert("The SL is wrong. Retrying...");

RefreshRates(); // Aggiorna i dati

if (Dist_SL < Min_Dist) // Se è inferiore al consentito

{

Dist_SL=Min_Dist; // Imposta il consentito

Alert(" Aumentata la distanza di SL = ",Dist_SL," pt");

}

i=i-50;

Alert (i);

Alert (Dist_SL);

cnt=cnt+1;

Allarme (cnt);

se (cnt==3)break;

continua; // Alla prossima iterazione

caso 135:Alert("Il prezzo è cambiato. Riprova...");

RefreshRates(); // Aggiorna i dati

continua; // Alla prossima iterazione

caso 136:Alert("Nessun prezzo. In attesa di un nuovo tick...");

while(RefreshRates()==false) // Fino a un nuovo tick

Sleep(1); // Ritardo del ciclo

continue; // Alla prossima iterazione

caso 146:Alert("Trading subsystem is busy. Retrying...");

Sleep(500); // Soluzione semplice

RefreshRates(); // Aggiorna i dati

continue; // Alla prossima iterazione

}

switch(Error) // Errori critici

{

caso 2 : Alert("Errore comune");

break; // Esci dallo 'switch'.

caso 5 : Alert("Versione obsoleta del terminale client;)

break; // Esci da 'switch'

caso 64: Alert("L'account è bloccato");

break; // Esci da 'switch'

caso 133:Alert("Trading vietato");

break; // Esci da 'switch'

default: Alert("Si è verificato un errore ",Error); // Altre alternative

}

//break;

}

//-------------------------------------------------------------------------- 9 --

Alert ("Lo script ha completato le sue operazioni ---------------------------");

return; // Esci da start()

}

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

In un certo senso funziona, ma molte volte ho problemi con lo stop loss.

 

Ecco la mia idea: se possiamo cambiare il serpente con il tasso di sr gaussiano all'interno dell'indicatore

indicatore ssrc potrebbe pagare i dividendi che cosa ne pensi? così invece di essere

l'ssrc sarebbe l'unico lato gaussiano sr rate spearmen rank correlation

"osgsrspc" lol .(ho provato a codificarlo ma è andato oltre la mia testa)

ssrc_bar.mq4

ssrc.mq4

os_gaussian_sr_rate.mq4

File:
 

Nuova domanda: 5° decimale e gestione del denaro

In un altro forum che frequento e che è per i clienti di un particolare EA, un cliente si lamentava del fatto che lo sviluppatore dell'EA non aveva ancora risolto il problema del 5° decimale / prezzo frazionario per il loro EA.

Lo sviluppatore sosteneva diversi mesi fa che questo problema richiedeva uno scripting speciale per risolverlo. Ora, 4 mesi dopo, ho praticamente detto che era ridicolo che non fosse stato ancora risolto - e ho sostenuto che richiedeva solo poche righe di codice per ridefinire "Punto" in modo simile al metodo descritto qui.

Quindi ecco che arriva la domanda. Lo sviluppatore insiste ancora che questo problema è super complicato e richiede una speciale programmazione di script per risolverlo. Ecco la spiegazione dello sviluppatore:

Ciao John. Hai ragione. Sempre più broker stanno passando ai pips frazionari. Tuttavia, il problema dei pips frazionari non è un bug in [nome rimosso]. È un problema con il modo in cui la piattaforma MT4 definisce la differenza nel numero di cifre decimali. Stiamo riprogrammando l'EA e gli indicatori in modo che riconoscano la differenza. Questo dovrebbe essere contenuto nella definizione della variabile "Point" all'interno della piattaforma MT4 e gli EA utilizzano questa definizione per determinare le posizioni decimali. Tuttavia, molte piattaforme MT4 non passano più di 4 posizioni decimali sull'EA, quindi è necessario includere uno scripting speciale. La nostra sfida è che usiamo la variabile "Point" in tutto l'EA e in tutti gli indicatori. Quindi, non è semplice come aggiungere un paio di righe di codice per ridefinire "Point". Spero di avere un programma di pip frazionato funzionante entro la fine della prossima settimana.

Quindi la mia domanda è questa: Qualcuno di voi programmatori esperti ha incontrato questo complicato requisito di scripting o problemi con il valore di "Punto" della piattaforma MT4?

Anche se si assume che "Point" sia limitato a 4 decimali, allora questo significherebbe che ci si deve preoccupare solo delle coppie con Point = 0.001 ---- che richiede ancora solo una o due righe di codice.

Oppure, potreste usare "Digits" invece di "Point" - che richiede ancora solo poche righe di codice.

O si potrebbe semplicemente usare una variabile booleana come "UseFractionalPips = true;" per ridefinire "Point".

Ho la sensazione che lo sviluppatore stia rendendo il problema più complicato di quanto non sia (o forse per altri motivi). Semplicemente non ho mai letto o sentito di questo problema con "Point" che è limitato a soli 4 decimali - e anche se lo fosse si potrebbe usare "Digits" o altri metodi per ridefinire il punto senza qualche script speciale.

Sto programmando in MT4 solo da 18 mesi, quindi ho pensato di rimandare a qualche programmatore più esperto quanto sia complicato il "fix" per trattare con i prezzi in pip frazionari in MT4.

Qualche pensiero?

Grazie in anticipo per il vostro aiuto,

-B