Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
int Weekday = TimeDayOfWeek(TimeLocal()); //Локальное время |
int Weekdays = TimeDayOfWeek(TimeCurrent()); //Серверное время |
while(IsExpertEnabled()) //До тех пор пока запушенно |
{if(Weekday!=0||Weekday!=6){Exp=true;if(Weekday==1){Info(4,Weekday,0);}} //Если не Сбб. Воск. то разрешено |
if(Weekdays==0||Weekdays==6) //Если Сбб. Воск. то не разрешено |
{
Exp=false;Info(5,Weekdays,0);
if(Weekdays==6){Sleep(86400000);} //Если суббота пауза 24 часа |
if(Weekdays==0){Sleep(3600000);} //Если воскресение пауза 1 час |
}
IsTradeAllowed
Restituisce informazioni sulla possibilità di fare trading con Expert Advisors.
boolIsTradeAllowed();
La seconda forma di questa chiamata restituisce informazioni sulla capacità di negoziare per un simbolo specificato in un momento specifico.
boolIsTradeAllowed(
const string symbol// simbolo
datetimetested_time// tempo
);
Parametri
simbolo
[simbolo.
tempo_testato
[Tempo.
Valore restituito
Restituisce true se l'EA è autorizzato a commerciare e il thread è libero, altrimenti restituisce false.
Grazie naturalmente, ma è come si dice per entrare dall'occhio di un posto) posso anche mettere una pausa sull'euro a 5,0 il server lo permetterà, e poi con ogni ciclo di timer provare a cambiare la pausa, se l'errore 132 allora il mercato è chiuso, se normale allora il commercio è, ma al momento del trading questo server è inondato, vorrei risolvere il problema umanamente, non attraverso "loop", ma questo è gli sviluppatori MK.
IsTradeAllowed
Restituisce informazioni sulla possibilità di fare trading con Expert Advisors.
boolIsTradeAllowed();
La seconda forma di questa chiamata restituisce informazioni sulla capacità di negoziare per un simbolo specificato in un momento specifico.
boolIsTradeAllowed(
const string symbol// simbolo
datetimetested_time// tempo
);
Parametri
simbolo
[simbolo.
tempo_testato
[Tempo.
Valore restituito
Restituisce true se l'EA è autorizzato a negoziare e il thread per eseguire le negoziazioni è libero, altrimenti restituisce false.
Alexander, ti sbagli)
questo funziona abbastanza bene
questo funziona abbastanza bene
Grazie per il suggerimento, ma quando il mercato è aperto non è corretto cercare di determinare la possibilità di lavorare con gli ordini, ma funzionerà.
Da parte mia, il mio ragionamento è il seguente.
Se è necessario fare trading sul simbolo corrente, un segno indiretto che il mercato è aperto è l'arrivo di nuovi tick. Quindi, l'evento OnTick è sufficiente e il problema è chiuso.
Se abbiamo bisogno di lavorare con simboli diversi da quello corrente, il fatto di aprire operazioni sul simbolo corrente non garantisce che le operazioni vengano eseguite su qualche altro simbolo. Per esempio, l'Expert Advisor è stato eseguito su EURUSD, l'ora è 09:00 UTC, e vogliamo scambiare azioni USA, il cui mercato aprirà solo alle 13:00 UTC. Quindi, OnTick non aiuterà. Dovremo determinare se il mercato si apre con altri simboli attraverso tentativi di inviare ordini al server a certi intervalli. Inviare un ordine una volta al minuto non è assolutamente un bombardamento del server, ma un approccio abbastanza normale. Cosa c'è di sbagliato in questo?
no tick no trade come mi è stato detto una volta da servicedesk su questo problema del giorno della settimana,
hanno suggerito una soluzione come.
TimeDayOfWeek(TimeLocal());
anche se non è del tutto corretto, perché il giorno della settimana può non essere lo stesso del giorno terminale.
Una condizione importante era quella di non cercare di aprire gli ordini, anche se ci avevo fatto ricorso molte volte in altri progetti. Ad essere onesti, mi sembra che questo sia il metodo più semplice e affidabile finora.
Finora ho trovato il modo migliore per farlo (ma sto ancora cercando, vedi sotto):
1) Determinare se il trading è permesso "faccia a faccia" - seconda forma della funzione IsTradeAllowed() (è stata descritta sopra). Se no, allora non è permesso :)
2) Confronta il tempo dell'ultima quotazione usando SymbolInfoInteger(<symbol>, SYMBOL_TIME) con il tempo di una delle sessioni di trading(SymbolInfoSessionTrade()), se il tempo della quotazione cade in uno dei range della sessione, allora il trade è permesso.
3) Controllare se il tempo della quotazione non è troppo "datato": se è più di xx minuti fa (confrontare SymbolInfoInteger(<symbol>, SYMBOL_TIME) e TimeCurrent(), allora pensiamo che la quotazione sia datata e, quindi, non possiamo fare trading con essa (se ho ragione, era circa tre minuti)
Lo svantaggio di questo approccio è il seguente: ci possono essere condizioni in cui i trade nel simbolo sono impossibili, mentre i tick passano.
Non sono entrato nel meccanismo; lo sviluppo è stato fatto per un broker e durante i test hanno attivato una tale modalità - i tick vanno, ma il trading è impossibile. Finora non siamo riusciti a superare questa variante.
È giusto dire che non ho incontrato questo nel trading reale. Quindi in condizioni "normali" la soluzione sembra tollerabile. Ma lo sto ancora cercando :)
P.S. I passi 1 e 2 possono essere combinati (per trasferire SymbolInfoInteger(<symbol>, SYMBOL_TIME) nella funzione IsTradeAllowed), ma non ho ancora fatto prove di tale variante e non lo dico.