YUKARI. Özetle bir danışmanı bir senaryoya dönüştürme ilkesi için minnettar olurum.
Ve senaryo ne verecek?
Genellikle terminalin ağ bağlantısı kesilir, standart olmayan bir zaman diliminden bir CSV dosyası yazılır ve ardından herhangi bir sembol ve süre yerine yüklenir, bu süre üzerinde test yapılır. Açılış fiyatlarında doğru, ancak çok fazla seçenek yok.
Genellikle terminalin ağ bağlantısı kesilir, standart olmayan bir zaman diliminden bir CSV dosyası yazılır ve ardından herhangi bir sembol ve süre yerine yüklenir, bu süre üzerinde test yapılır. Açılış fiyatlarında doğru, ancak çok fazla seçenek yok.
Cevap veren herkese teşekkürler. TF ikame seçeneğini beğendim, deneyeceğim. Başlangıçta, standart olmayan bir TF'yi özerk olarak açmayı ve üzerine bir komut dosyası danışmanı atarak anlaşmaları bir dosyaya yüklemeyi planladım.
Kodunuzu araştırmaya başladınız. Şaşırdım. Gönderdiğiniz kişi çalışmıyor. Parçalardan monte edildiği görülüyor ama en azından braketler doğru yerleştirilmiş.
Kod iki kısımdır. .Bu benim uzmanım. Lütfen bir bak.
//+------------------------------------------------------------------+//| rusa_v4.mq4 |//| //| |//+------------------------------------------------------------------+#property copyright ""#property link "https://www.mql5.com/ru/users/avoitenko"//--- Внешние переменные externstring General = "=== General settings ===" ;
externint TakeProfit_Buy = 260 ; // Тейк профит для Buyexternint StopLoss_Buy = 120 ; // Стоп лосс для Buyexternint TakeProfit_Sell = 140 ; // Тейк профит для Sellexternint StopLoss_Sell = 110 ; // Стоп лосс для Sellexternint TrailingStop = 0 ; // Трейлинг стопexterndouble Lots = 0.02 ; // Лот externint Slippage = 10 ; // Проскальзываниеexternint BarsShift = 0 ; // Смещение в барах для анализа сигналаexternint Magic = 555 ; // Уникальный номер советникаexternstring MA1 = "=== #1 Moving Average settings ===" ;
externint MA1_period = 1 5 ; // Период скользящей средней externint MA1_shift = 0 ; // Смещение скользящей средней externint MA1_method = 1 ; // MODE_SMA=0,MODE_EMA=1,MODE_SMMA=2,MODE_LWMA =3;externint MA1_price = 2 ; // PRICE_CLOSE=0,PRICE_OPEN=1,PRICE_HIGH=2,PRICE_LOW=3,PRICE_MEDIAN=4,PRICE_TYPICAL=5,PRICE_WEIGHTED=6;externstring MA2 = "=== #2 Moving Average settings ===" ;
externint MA2_period = 2 0 ;
externint MA2_shift = 0 ;
externint MA2_method = 0 ;
externint MA2_price = 0 ;
externstring MA3 = "=== #3 Moving Average settings ===" ;
externint MA3_period = 70;
externint MA3_shift = 8 ;
externint MA3_method = 2 ;
externint MA3_price = 3 ;
externstring RSI = "=== RSI settings ===" ;
externint RSI_period = 14 ; // Период RSIexternint RSI_price = 3 ; // PRICE_CLOSE=0,PRICE_OPEN=1,PRICE_HIGH=2,PRICE_LOW=3,PRICE_MEDIAN=4,PRICE_TYPICAL=5,PRICE_WEIGHTED=6;externint macd_fast = 12 ;
externint macd_slow = 15 ;
externint macd_signal = 1 ;
externint macd_price = 3 ; // 0-PRICE_CLOSE, 1-PRICE_OPEN, 2-PRICE_HIGH, 3-PRICE_LOW, 4-PRICE_MEDIAN, 5-PRICE_TYPICAL, 6-PRICE_WEIGHTEDexternint macd_open = 7 ;
//--- Глобальные переменныеdouble lot; // лотdouble ma10,ma20,ma30,ma11,ma21,ma31,rsi, macd;
int stop_loss_buy; // стоп лоссint take_profit_buy; // тейк профитint stop_loss_sell; // стоп лоссint take_profit_sell; // тейк профитint slippage; // проскальзываниеint trailing_stop; // трейлинг стопint min_level; // минимальный отступ от цены для установки SL / TPint bars_shift; // смещение в барах для торговых сигналовint bars_count; // минимальное число баров для работыdatetime candle_time = 0 ;
bool sell_open = false; // флаг открытия позиции sellbool buy_open = false; // флаг открытия позиции buybool new_bar_buy = false; // флаг нового бараbool new_bar_sell = false; // флаг нового бара//+------------------------------------------------------------------+int init()
//+------------------------------------------------------------------+
{
//--- проверка правильности ввода данных
bars_shift = BarsShift;
if (bars_shift < 0 )bars_shift = 0 ;
bars_count = MathMax4(MA1_period, MA2_period, MA3_period, RSI_period) + bars_shift;
//--- инициализация переменных
stop_loss_buy = StopLoss_Buy;
take_profit_buy = TakeProfit_Buy;
stop_loss_sell = StopLoss_Sell;
take_profit_sell = TakeProfit_Sell;
slippage = Slippage;
trailing_stop = TrailingStop;
//--- Если цена состоит из 3-x / 5-и цифрif (( Digits == 3 ) || ( Digits == 5 ))
{
stop_loss_buy = stop_loss_buy * 10 ;
take_profit_buy = take_profit_buy * 10 ;
stop_loss_sell = stop_loss_sell * 10 ;
take_profit_sell = take_profit_sell * 10 ;
slippage = slippage * 10 ;
trailing_stop = trailing_stop * 10 ;
}
Print ( "Советник начал свою работу" );
return ( 0 );
}
bool macd_up( int timeframe, int fast, int slow, int signal, int price, int num) {
double y;
double x = iMACD ( NULL ,timeframe,fast,slow,signal,price,MODE_MAIN, 0 )* 100000 ;
for ( int i= 1 ; i<num; i++) {
y = iMACD ( NULL ,timeframe,fast,slow,signal,price,MODE_MAIN,i)* 100000 ;
if (y > x) return (false);
else x = y;
}
return (true);
}
//+------------------------------------------------------------------+bool macd_down( int timeframe, int fast, int slow, int signal, int price, int num) {
double y;
double x = iMACD ( NULL ,timeframe,fast,slow,signal,price,MODE_MAIN, 0 )* 100000 ;
for ( int i= 1 ; i<num; i++) {
y = iMACD ( NULL ,timeframe,fast,slow,signal,price,MODE_MAIN,i)* 100000 ;
if (y < x) return (false);
else x = y;
}
return (true);
}
//+------------------------------------------------------------------+int deinit()
//+------------------------------------------------------------------+
{
Print ( "Советник завершил свою работу" );
return ( 0 );
}
//+------------------------------------------------------------------+int start()
//+------------------------------------------------------------------+
{
//--- Разрешение на открытие позиций - каждую свечуif (candle_time != Time[ 0 ])
{
candle_time = Time[ 0 ];
new_bar_buy = true;
new_bar_sell = true;
}
if ( Bars < bars_count){ Print ( "Мало данных для работы" ); return ( 0 );}
//--- Получение значений индикатора iMA
ma10 = iMA ( Symbol (), Period (), MA1_period, MA1_shift, MA1_method, MA1_price, bars_shift);
ma20 = iMA ( Symbol (), Period (), MA2_period, MA2_shift, MA2_method, MA2_price, bars_shift);
ma30 = iMA ( Symbol (), Period (), MA3_period, MA3_shift, MA3_method, MA3_price, bars_shift);
ma11 = iMA ( Symbol (), Period (), MA1_period, MA1_shift, MA1_method, MA1_price, bars_shift+ 1 );
ma21 = iMA ( Symbol (), Period (), MA2_period, MA2_shift, MA2_method, MA2_price, bars_shift+ 1 );
rsi = iRSI ( Symbol (), Period (), RSI_period, RSI_price, bars_shift);
macd = iMACD ( NULL , 0 ,macd_fast,macd_slow,macd_signal,macd_price,MODE_MAIN, 0 );
{
if (macd < 0 )
{
if (macd_down( 0 ,macd_fast,macd_slow,macd_signal,macd_price,macd_open)) return (true);
{
//--- Условие для продажиif (ma11 < ma21 && ma10 > ma20 && ma30 > ma10 && rsi< 50 && new_bar_sell)
{
sell_open=true;
new_bar_sell = false;
}
}
}
}
{
if (macd > 0 )
{
if (macd_up( 0 ,macd_fast,macd_slow,macd_signal,macd_price,macd_open)) return (true);
{
//--- Условие для продажиif (ma11 > ma21 && ma10 < ma20 && ma30 < ma10 && rsi> 50 && new_bar_buy)
{
buy_open=true;
new_bar_buy = false;
}
}
}
}
{
if (macd > 0 )
{
if (macd_up( 0 ,macd_fast,macd_slow,macd_signal,macd_price,macd_open)) return (true);
{
//--- Условие для покупкиif (ma11 < ma21 && ma10 > ma20 && ma30 > ma10 && rsi> 50 && new_bar_buy)
{
buy_open=true;
new_bar_buy = false;
}
}
}
{
if (macd < 0 )
{
if (macd_down( 0 ,macd_fast,macd_slow,macd_signal,macd_price,macd_open)) return (true);
{ //--- Условие для продажиif (ma11 > ma21 && ma10 < ma20 && ma30 < ma10 && rsi< 50 && new_bar_sell)
{
sell_open=true;
new_bar_sell = false;
}
}
}
}
}
//--- выставление рыночных ордеровif ( IsTradeAllowed ())
{
Trade_BUY();
Trade_SELL();
}
return ( 0 );
}
EA'yı test cihazında çalıştırıyorum. Sunucu dört hanelidir. Günlük, alım veya satım emri verirken,
2011.10.23 15:27:26 2010.12.16 06:16 test_sovetnik GBPUSD,H1: açık #1 1.5551 sl'de 0.10 GBPUSD satın: 1.4551 tp: 1.5586 tamam
Ama 1.55512 fiyatla açılıyor!!! Beş basamak. Ayrıca, gecikmeler dört haneye göre yerleştirilir ve ayrıca dört haneye göre çalışır. Ancak OP_SELL ve OP_BUY - yalnızca beş basamakla açılır!
NormalizeDouble(Sor, Rakamlar);
Hiç bir şey yardımcı olmaz! Bu sorunu nasıl çözeceğimi söyle?
Elbette, son işareti görmezden gelebilirsiniz. Hata çökmez, ancak deneyin saflığı için tüm işlemlerin dört basamakla sonuçlandırılmasına ihtiyacım var.
Büyük olasılıkla, MT4'ünüz ve sunucunuz benimki gibi beş basamaklı bir alıntıya sahip. Yani, her şey 10 ile çarpılmalıdır, çünkü. Rakamlar = 5.
YUKARI. Özetle bir danışmanı bir senaryoya dönüştürme ilkesi için minnettar olurum.
YUKARI. Özetle bir danışmanı bir senaryoya dönüştürme ilkesi için minnettar olurum.
Kesin olarak bilmiyorum, ancak danışman komut dosyalarına taşınırsa, bir komut dosyası gibi çalışacak gibi görünüyor.
YUKARI. Özetle bir danışmanı bir senaryoya dönüştürme ilkesi için minnettar olurum.
Ve senaryo ne verecek?
Genellikle terminalin ağ bağlantısı kesilir, standart olmayan bir zaman diliminden bir CSV dosyası yazılır ve ardından herhangi bir sembol ve süre yerine yüklenir, bu süre üzerinde test yapılır. Açılış fiyatlarında doğru, ancak çok fazla seçenek yok.
Ve senaryo ne verecek?
Genellikle terminalin ağ bağlantısı kesilir, standart olmayan bir zaman diliminden bir CSV dosyası yazılır ve ardından herhangi bir sembol ve süre yerine yüklenir, bu süre üzerinde test yapılır. Açılış fiyatlarında doğru, ancak çok fazla seçenek yok.
Cevap veren herkese teşekkürler. TF ikame seçeneğini beğendim, deneyeceğim. Başlangıçta, standart olmayan bir TF'yi özerk olarak açmayı ve üzerine bir komut dosyası danışmanı atarak anlaşmaları bir dosyaya yüklemeyi planladım.
Ne:
Maksimum düşüş, % — yüzde olarak maksimum düşüş;
Strateji optimize edicide böyle bir parametre belirtebilirsiniz, ancak bunun ne anlama geldiği net değil...
1) Bu, orijinal mevduata kıyasla maksimum bakiye indirimi mi?
2) Aşağıdaki öz sermaye yüksek ve düşük arasındaki maksimum fark nedir?
3) Minimum ve maksimum marj arasındaki fark?
Ve daha birçok seçenek akla geliyor.
Lütfen kelimelerin tam anlamlarını açıklayınız ( Maksimum düşüş, %)
Kodunuzu araştırmaya başladınız. Şaşırdım. Gönderdiğiniz kişi çalışmıyor. Parçalardan monte edildiği görülüyor ama en azından braketler doğru yerleştirilmiş.
Kod iki kısımdır. .Bu benim uzmanım. Lütfen bir bak.
ikinci kısım
Merhaba!
EA'yı test cihazında çalıştırıyorum. Sunucu dört hanelidir. Günlük, alım veya satım emri verirken,
2011.10.23 15:27:26 2010.12.16 06:16 test_sovetnik GBPUSD,H1: açık #1 1.5551 sl'de 0.10 GBPUSD satın: 1.4551 tp: 1.5586 tamam
Ama 1.55512 fiyatla açılıyor!!! Beş basamak. Ayrıca, gecikmeler dört haneye göre yerleştirilir ve ayrıca dört haneye göre çalışır. Ancak OP_SELL ve OP_BUY - yalnızca beş basamakla açılır!
NormalizeDouble(Sor, Rakamlar);
Hiç bir şey yardımcı olmaz! Bu sorunu nasıl çözeceğimi söyle?
Elbette, son işareti görmezden gelebilirsiniz. Hata çökmez, ancak deneyin saflığı için tüm işlemlerin dört basamakla sonuçlandırılmasına ihtiyacım var.
Büyük olasılıkla, MT4'ünüz ve sunucunuz benimki gibi beş basamaklı bir alıntıya sahip. Yani, her şey 10 ile çarpılmalıdır, çünkü. Rakamlar = 5.
Kurulanlardan biri işe yaradıysa, bekleyen bir siparişi nasıl sileceğimi söyle? Toplamda, iki bekleyen ayarlandı.
Manuel olarak yapılabilir. Sağ tıklama ve daha fazlası... :)
Bir komut dosyası veya bir danışman kullanabilirsiniz. Daha çok nelerden hoşlanırsın? XD