Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 679
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
Sto scrivendo un robot, collegando Ctrade, prima voglio usare la logica, secondo la quale all'inizio di ogni ora farà un'operazione di acquisto a prezzo di mercato, dopo mezz'ora venderà tutto (Sell) a un nuovo prezzo di mercato. Quando lo provo nel tester, ottengo l'errore Invalid order type.
Il mio strumento è SBER, il mio cliente è Otkritie. Il mio ordine è in modalità manuale, il mio ordine non è passato nel conto reale o demo.
Quale potrebbe essere l'errore? È vero che il mercato azionario non può essere scambiato al prezzo di mercato?
Sto scrivendo un robot, collegando Ctrade, prima voglio usare la logica, secondo la quale all'inizio di ogni ora farà un'operazione di acquisto a prezzo di mercato, dopo mezz'ora venderà tutto (Sell) a un nuovo prezzo di mercato. Quando lo provo nel tester, ottengo l'errore Invalid order type.
Il mio strumento è SBER, il mio cliente è Otkritie. Il mio ordine è in modalità manuale, il mio ordine non è passato nel conto reale o demo.
Quale potrebbe essere l'errore? È vero che il mercato azionario non può essere scambiato al prezzo di mercato?
Se l'EA è in esecuzione su un computer portatile ed è andato in modalità di ibernazione, l'EA collegato funzionerà in questo caso?
E tu includerai la stampa nel registro di qualsiasi valore e lo scoprirai. Se non stampa, non funziona.
Se l'EA è in esecuzione su un computer portatile ed è andato a dormire, l'EA collegato funzionerà in questo caso?
La modalità di ibernazione è di solito quella che spegne l'unità,
Recentemente ho installato un server, e solo il terzo giorno ho visto che il computer era addormentato, cioè non funzionava, cioè tutti gli EA non funzionavano,
Ho disattivato la modalità di ibernazione e tutto va bene.
Questo è chiaro...mi chiedevo se qualcuno potesse condividere la sua esperienza con un principiante.
Ciao, se il consulente è in esecuzione su un computer portatile ed è in modalità di ibernazione, il consulente collegato funzionerà in questo caso?
No, non funzionerà. Nelle impostazioni di alimentazione, impostare l'alimentazione:
Senza il tuo codice, è difficile capire cosa hai scritto e perché non funziona.
//| Gear.mq5 |
//| Copyright 2016, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#include <Trade/Trade.mqh>
CTrade trade;
bool TimeFlag, FLG;
int TimeScale=50, TimeInMemory, TimeNow;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---Блок получения информации с биржи
MqlTick oCurrentTick;
SymbolInfoTick(Symbol(), oCurrentTick);
//---Блок определения начала нового временного интервала
TimeFlag=false;
datetime tm=TimeCurrent();
MqlDateTime stm;
TimeToStruct(tm,stm);
if(MathMod(StringToInteger((string)stm.min),TimeScale)==0)
{
TimeNow=StringToInteger((string)stm.min);
}
if(TimeNow != TimeInMemory)
{
TimeInMemory=TimeNow;
TimeFlag=true;
//Print(_Symbol);
}
if(TimeFlag)
{
if(FLG)
{
if(!trade.Buy(1,_Symbol))
{
//--- сообщим о неудаче
Print("Метод Buy() потерпел неудачу. Код возврата=",trade.ResultRetcode(),
". Описание кода: ",trade.ResultRetcodeDescription());
}
else
{
Print("Метод Buy() выполнен успешно. Код возврата=",trade.ResultRetcode(),
" (",trade.ResultRetcodeDescription(),")");
}
FLG=false;
}
else
{
trade.Sell(1);
FLG=true;
}
}
}
//+------------------------------------------------------------------+
Questo non è il modo di farlo:
int TimeScale=50,TimeInMemory,TimeNow;
o meglio, dopo una tale dichiarazione, dovete inizializzare esplicitamente(assegnare valori a) queste variabili in OnInit().
Anche il metodo Sell deve essere circondato da controlli, come
" (",trade.ResultRetcodeDescription(),")");
E ci può essere anche una fregatura - la mattina, all'apertura delle contrattazioni, l'asta non inizia immediatamente, non dal primo secondo - è allora che sono possibili errori.