Data in cui il file è stato compilato senza tempo (ore, minuti e secondi sono 0)
__DATETIME__
Data e ora in cui il file è stato compilato
{\AN8}CI SONO I SOLDI PER L'AFFITTO DI UNA CASA, MA NON PER L'AFFITTO.
Numero di linea nel codice sorgente dove si trova la macro
__FILE__
Nome del file da compilare
__PATH__
Percorso assoluto al file compilato corrente
__FUNCTION__
Nome della funzione nel cui corpo si trova la macro
__FUNCSIG__
Firma della funzione nel cui corpo si trova la macro. La descrizione della funzione con i tipi di parametri può essere utile per identificare lefunzioni sovraccaricate
Potreste dirmi dove nel codice c'è un errore che impedisce di aprire una posizione BUY sulla stessa barra con SELL che ha chiuso la posizione precedente?
Le regole sono semplici (da imparare): 1 Entrata - indicatore lento che attraversa 0 + veloce anche nella zona (comprare/vendere)
2 Uscita - attraversamento con indicatore veloce 0
//+------------------------------------------------------------------+//| TestDPO.mq5 |//| Copyright 2020, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2020, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#include <Trade\Trade.mqh>
CTrade trade;
inputint dpo_fast_period = 9; // DPO Fast Periodinputint dpo_slow_period = 40; // DPO Fast Periodinputint magic = 1000; // Magic советникаinputulong slippage = 10; // Проскальзывание ценыinputdouble volume = 0.1; // размер позицииint DPO_fast; // Хэндл для быстрого DPOint DPO_slow; // Хэндл для медленного DPOdouble fDPOVal[]; //Динамический массив для хранения значений fast DPOdouble sDPOVal[]; //Динамический массив для хранения значений slow DPO//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
//---------------Задаем цены покупки и продажи------------------------double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
int signal=0; // сигнал на покупку, продажу//--------------Проверка на новый барif(!isNewBar())
return;
//--------------------------------------------------------------------
DPO_fast=iCustom(NULL,0,"Examples\\DPO",dpo_fast_period); // получаем хэндлы для быстрого
DPO_slow=iCustom(NULL,0,"Examples\\DPO",dpo_slow_period); // получаем хэндлы для медленногоArraySetAsSeries(fDPOVal,true); //задаем направление индексов массиваArraySetAsSeries(sDPOVal,true);
if(CopyBuffer(DPO_fast,0,0,10,fDPOVal)<0) // наполняем массив значений DPO fast
{
Alert("Ошибка копирования буфера индикатора fast DPO. Ошибка ", GetLastError());
}
if(CopyBuffer(DPO_slow,0,0,10,sDPOVal)<0) // наполняем массив значений DPO slow
{
Alert("Ошибка копирования буфера индикатора slow DPO. Ошибка ", GetLastError());
}
double DPO_fast_c_value=NormalizeDouble(fDPOVal[1],6); // запоминаем значение индикатора DPO fast на предыдущем бареdouble DPO_slow_c_value=NormalizeDouble(sDPOVal[1],6); // запоминаем значение индикатора DPO slow на предыдущем бареdouble DPO_fast_p_value=NormalizeDouble(fDPOVal[2],6); // запоминаем значение индикатора DPO fast на пред-предыдущем бареdouble DPO_slow_p_value=NormalizeDouble(sDPOVal[2],6); // запоминаем значение индикатора DPO slow на пред-предыдущем бареif(DPO_slow_c_value>0 && DPO_slow_p_value<0 && DPO_fast_c_value>0) // если медленный индикатор пересекает 0 снизу вверх и быстрый находится выше 0
signal=1; // сигнал на открытие покупкиif(DPO_slow_c_value<0 && DPO_slow_p_value>0 && DPO_fast_c_value<0) // если медленный индикатор пересекает 0 сверху вниз и быстрый находится ниже 0
signal=-1; // сигнал на открытие продажиif(DPO_fast_c_value>0 && DPO_fast_p_value<0) // если быстрый индикатор пересекает 0 снизу вверх
signal=-2; // сигнал на закрытие продажиif(DPO_fast_c_value<0 && DPO_fast_p_value>0) // если быстрый индикатор пересекает 0 сверху вниз
signal=2; // сигнал на закрытие покупкиswitch (signal)
{
case -1:
trade.Sell(volume,NULL,Bid,0,0,NULL);
break;
case1:
trade.Buy(volume,NULL,Ask,0,0,NULL);
break;
case -2:
trade.PositionClose(_Symbol,slippage);
break;
case2:
trade.PositionClose(_Symbol,slippage);
break;
}
}
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Как я собираю себе советника методом тыка Из этих...
Potreste dirmi dove nel codice c'è un errore che impedisce di aprire una posizione BUY sulla stessa barra con SELL che ha chiuso una posizione precedente?
Le regole sono semplici (da imparare): 1 Entrata - indicatore lento che attraversa 0 + veloce anche nella zona (comprare/vendere)
2 Uscita - indicatore veloce che attraversa la linea 0
Tutto funziona correttamente: condizioni di apertura attraversamento della linea 0 dell'indicatore lento, solo l'indicatore veloce ha attraversato la linea 0 nel posto specificato.
Una condizione deve essere aggiunta per aprire una posizione nella posizione specificata, lento nella stessa area e veloce attraversa la linea 0
Potreste per favore consigliarmi dove nel codice c'è un errore che impedisce l'apertura della posizione BUY sulla stessa barra con SELL, che ha chiuso una posizione precedente?
Le regole sono semplici (da imparare): 1 Entrata - indicatore lento che attraversa 0 + veloce anche nella zona (comprare/vendere)
Идея автоматической торговли привлекательна тем, что торговый робот может без устали работать 24 часа в сутки и семь дней в неделю. Робот не знает усталости, сомнений и страха, ему не ведомы психологические проблемы. Достаточно четко формализовать торговые правила и реализовать их в виде алгоритмов, и робот готов неустанно трудиться. Но прежде...
OK, cercherò un monitor con 4K.
Da dove viene questa foto?
Forum sul trading, sistemi di trading automatico e test di strategia
FAQ da principianti MQL5 MT5 MetaTrader 5
Vitaly Muzichenko, 2020.05.13 08:32
Ecco 4K e1920x1080
Da dove viene questa foto?
Inviato da 4K
Inviato con 4K
Beh, puoi controllare di nuovo, suppongo? O no?
Beh, puoi controllare di nuovo, suppongo? O no?
Non desiderabile)
Come ottenere il valore della versione del programma MQL5 definito dalla proprietà# version?
Si scopre che non si può, perché inSostituzioni macro predefinite
Costante
Descrizione
__DATA__
Data in cui il file è stato compilato senza tempo (ore, minuti e secondi sono 0)
__DATETIME__
Data e ora in cui il file è stato compilato
{\AN8}CI SONO I SOLDI PER L'AFFITTO DI UNA CASA, MA NON PER L'AFFITTO.
Numero di linea nel codice sorgente dove si trova la macro
__FILE__
Nome del file da compilare
__PATH__
Percorso assoluto al file compilato corrente
__FUNCTION__
Nome della funzione nel cui corpo si trova la macro
__FUNCSIG__
Firma della funzione nel cui corpo si trova la macro. La descrizione della funzione con i tipi di parametri può essere utile per identificare lefunzioni sovraccaricate
__MQLBUILD__, __MQL5BUILD__
Numero della compilazione del compilatore
nessuna variabile del genere
Come ottenere il valore della versione del programma MQL5 definito dalla proprietà# version?
Io uso questo, non ho trovato nessun'altra opzione. È necessario scrivere la versione due volte, ma non è così difficile
Buona giornata, cari esperti.
Potreste dirmi dove nel codice c'è un errore che impedisce di aprire una posizione BUY sulla stessa barra con SELL che ha chiuso la posizione precedente?
Le regole sono semplici (da imparare):
1 Entrata - indicatore lento che attraversa 0 + veloce anche nella zona (comprare/vendere)
2 Uscita - attraversamento con indicatore veloce 0
Buon pomeriggio, stimati esperti.
Potreste dirmi dove nel codice c'è un errore che impedisce di aprire una posizione BUY sulla stessa barra con SELL che ha chiuso una posizione precedente?
Le regole sono semplici (da imparare):
1 Entrata - indicatore lento che attraversa 0 + veloce anche nella zona (comprare/vendere)
2 Uscita - indicatore veloce che attraversa la linea 0
Tutto funziona correttamente: condizioni di apertura attraversamento della linea 0 dell'indicatore lento, solo l'indicatore veloce ha attraversato la linea 0 nel posto specificato.
Una condizione deve essere aggiunta per aprire una posizione nella posizione specificata, lento nella stessa area e veloce attraversa la linea 0
Buona giornata, cari esperti.
Potreste per favore consigliarmi dove nel codice c'è un errore che impedisce l'apertura della posizione BUY sulla stessa barra con SELL, che ha chiuso una posizione precedente?
Le regole sono semplici (da imparare):
1 Entrata - indicatore lento che attraversa 0 + veloce anche nella zona (comprare/vendere)
2 Uscita - attraversamento dell'indicatore rapido 0
State facendo un errore grossolano: state creando DUE INLIKER PER OGNI TICK!
La maniglia dell'indicatore DEVE essere creata una volta a OnInit.
Si prega di leggere l'aiuto diiCustom.