[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 88

 

Tutto era qui C:\Users\======AppData\Local\VirtualStore\Program Files\====== - MetaTrader\

vista

 

Si prega di avvisare.

Ho scritto un semplice script (impostare due ciondoli vicino al mercato per metterlo sul grafico prima del rilascio delle notizie in modo da non doverlo fare manualmente). Sembra essere molto più semplice, ma non funziona, nessun ordine viene aperto e il giornale dice solo che lo script viene caricato con successo, e poi immediatamente rimosso nello stesso secondo! Si compila senza errori. L'ho convertito in forma esperta, cioè ho aggiunto init e deinit, per controllarlo in tester, ha funzionato. Ma, come capite, non ho bisogno di un Expert Advisor, ma solo di uno script.

Cosa c'è di sbagliato qui? Grazie in anticipo.

Ecco il codice dello script:

#proprietà copyright "alexey15"
#proprietà link ""
#proprietà show_confirm

extern int SL = 15;
extern int TP = 90;
extern int DELTA = 15;
extern double LOT = 0,1;
extern int SLIP = 3;

//+------------------------------------------------------------------+
//| funzione di avvio del programma script |
//+------------------------------------------------------------------+
int start()
{
//----
doppio BUYPRICE = Ask + DELTA*Point;
double SELLPRICE = Bid - DELTA*Point;
int OPEN_ORDER;

OPEN_ORDER=OrderSend(Symbol(),OP_BUYSTOP,LOT,BUYPRICE,SLIP,BUYPRICE-SL*Point,BUYPRICE+TP*Point,NULL,0,0,Blue);
OPEN_ORDER=OrderSend(Symbol(),OP_SELLSTOP,LOT,SELLPRICE,SLIP,SELLPRICE+SL*Point,SELLPRICE-TP*Point,NULL,0,0,Red);


//----
ritorno(0);
}
//+------------------------------------------------------------------+

 
wiwkin52:

Salve. Per favore, aiutatemi. Ho disinstallato il mt e tutti gli indicatori insieme ad esso, tutti. Ora l'ho installato e tutto è ancora lì. Cosa devo fare? Forse ci sono copie di indicatori e tutto il resto conservati da qualche parte?

Hai solo disinstallato o hai anche cancellato la cartella MT da Program Files?
 
alexey15:

Si prega di avvisare.

Ho scritto un semplice script (impostando due pendenti in entrambe le direzioni vicino al mercato per metterlo sul grafico prima del rilascio delle notizie in modo da non doverlo fare manualmente). Sembra essere molto più semplice, ma non funziona, nessun ordine viene aperto e il giornale dice solo che lo script viene caricato con successo, e poi immediatamente rimosso nello stesso secondo! Si compila senza errori. L'ho convertito in forma esperta, cioè ho aggiunto init e deinit, per controllarlo in tester, ha funzionato. Ma, come capite, non ho bisogno di un Expert Advisor, ma solo di uno script.

Cosa c'è di sbagliato qui? Grazie in anticipo.

Ecco il codice dello script:


Ho controllato. Il tuo script funziona.

Stampare l'errore per sicurezza:

int start()
{
//----
double BUYPRICE = Ask + DELTA*Point;
double SELLPRICE = Bid - DELTA*Point;
int TicketBS,TicketSS;
TicketBS=OrderSend(Symbol(),OP_BUYSTOP,LOT,BUYPRICE,SLIP,BUYPRICE-SL*Point,BUYPRICE+TP*Point,NULL,0,0,Blue);
TicketSS=OrderSend(Symbol(),OP_SELLSTOP,LOT,SELLPRICE,SLIP,SELLPRICE+SL*Point,SELLPRICE-TP*Point,NULL,0,0,Red);
 if(TicketBS<=0 || TicketSS<=0)Print("Error = ",GetLastError());
//----
return(0);
}

 
alexey15:

Si prega di avvisare.

Ho scritto un semplice script (impostare due ciondoli vicino al mercato per metterlo sul grafico prima del rilascio delle notizie in modo da non doverlo fare manualmente). Sembra essere molto più semplice, ma non funziona, nessun ordine viene aperto e il giornale dice solo che lo script viene caricato con successo, e poi immediatamente rimosso nello stesso secondo! Si compila senza errori. L'ho convertito in forma esperta, cioè ho aggiunto ininit e deinit, per controllarlo in tester, ha funzionato. Ma, come capite, non ho bisogno di un Expert Advisor, ma solo di uno script.

Cosa c'è di sbagliato qui? Grazie in anticipo.

Funziona sul numero a quattro cifre. Non l'ho controllato sui livelli a cinque cifre, ma ho aggiunto un controllo per i vincoli su StopLevel:

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
extern int SL     = 15;
extern int TP     = 90;
extern int DELTA  = 15;
extern double LOT = 0.1;
extern int SLIP   = 3;

//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
int StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL);
if (DELTA <= StopLevel) DELTA = StopLevel+1;

double BUYPRICE = Ask + DELTA*Point;
double SELLPRICE = Bid - DELTA*Point;
int OPEN_ORDER;

OPEN_ORDER=OrderSend(Symbol(),OP_BUYSTOP,LOT,BUYPRICE,SLIP,BUYPRICE-SL*Point,BUYPRICE+TP*Point,NULL,0,0,Blue);
OPEN_ORDER=OrderSend(Symbol(),OP_SELLSTOP,LOT,SELLPRICE,SLIP,SELLPRICE+SL*Point,SELLPRICE-TP*Point,NULL,0,0,Red);

//----
return(0);
}
//+------------------------------------------------------------------+
In linea di principio, si possono fare aggiustamenti del punto per quattro, cinque cifre per evitare errori. Perché il livello Delta dovrebbe essere dieci volte più grande su un cinque cifre, cioè 150 invece di 15, e gli stop e le prese di conseguenza...

Allora sarebbe così:

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
extern int SL     = 15;
extern int TP     = 90;
extern int DELTA  = 15;
extern double LOT = 0.1;
extern int SLIP   = 3;

//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
double PointX;

if(Digits==5 || Digits==3) PointX = Point * 10;    // Корректировка Point под трёх- пятизнак
if(Digits==4 || Digits==2) PointX = Point;

int StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL);
if (DELTA <= StopLevel) DELTA = StopLevel+1;

double BUYPRICE = Ask + DELTA*PointX;
double SELLPRICE = Bid - DELTA*PointX;
int OPEN_ORDER;

OPEN_ORDER=OrderSend(Symbol(),OP_BUYSTOP,LOT,BUYPRICE,SLIP,BUYPRICE-SL*PointX,BUYPRICE+TP*PointX,NULL,0,0,Blue);
OPEN_ORDER=OrderSend(Symbol(),OP_SELLSTOP,LOT,SELLPRICE,SLIP,SELLPRICE+SL*PointX,SELLPRICE-TP*PointX,NULL,0,0,Red);

//----
return(0);
}
//+------------------------------------------------------------------+
 

Buongiorno!

Qualcuno ha qualche consiglio sugli indici...?

 
volshebnik:

Buongiorno!

Qualcuno ha qualche consiglio sugli indici...?

Giusto, gli indici.
 
splxgf:
Giusto, gli indici.
Non è divertente) La domanda era qui - https://www.mql5.com/ru/forum/131277/page87 Ma siccome gli amministratori del forum non raccomandano di ripetere le domande, non l'ho postata di nuovo.
 
volshebnik:

Ciao!

Puoi dirmi per favore cosa c'è che non va? Sto usando il tester su GBPUSD - apre i trade come dovrebbe essere. Lo sto usando sull'indice del dollaro DXH1 - non apre molte operazioni, l'errore "130" - Arresti errati. Inoltre, non è chiaro cosa c'è di sbagliato - si apre e non si apre in situazioni simili, ma più di questo. Spread e livello di stop per Dollar Index -100 e 200. Spread e livello di stop per GBPUSD -3 e 4. Prezzi nell'indice del dollaro, ad esempio 78,150, nella coppia - 4 decimali. Ma è contabilizzato.

Ecco una parte del codice:


Così su due piedi:

1) SL e TP non sono normalizzati;

2) OrderSend usa Digits quando normalizza, mentre l'ordine viene effettuato da Symb.

Prova in questo modo:

int opDigits=MarketInfo(Symb,MODE_DIGITS);
SL = NormalizeDouble(SL,opDigits);
TP = NormalizeDouble(TP,opDigits);
ОткрФрвверх = NormalizeDouble(ОткрФрвверх,opDigits);
ticketup=OrderSend(Symb, OP_BUYSTOP, Lot, ОткрФрвверх,0, SL, TP,NULL,A,0,вверх); // Ордер вверх
 
PapaYozh:


A occhio e croce:

1) SL e TP non sono normalizzati;

2) OrderSend usa Digits per la normalizzazione, mentre l'ordine è impostato da Symb.

Provate in questo modo:

Grazie mille! Ha funzionato, ma raramente, a volte si verifica lo stesso errore - 130....... ( È sempre necessario normalizzare gli stop o solo sugli indici ? (solo sulle coppie di valute gli stop hanno sempre funzionato, secondo me, senza normalizzazione).