Vurgulanır...<0 ise, kaybedilen ticaretin çoğu artar
> 0 ise, o zaman karlı bir ticaretin çoğu artar
merhaba.
Danışmanınız hakkında başka bir soru vardı
Bir demo üzerinde test ederken aşağıdakiler oldu:
belirtilen parametrelere ulaşıldığında, danışman "dur" moduna geçti - yani "başlat" düğmesi açık, ancak aynı zamanda ticaret durmadı, ancak çok kısa işlemler var, kelimenin tam anlamıyla bir veya iki sent. Bu kadar mı amaçlanmış?
Ayrıca danışmanın bir dizi anlaşmayı al veya dur ve para limiti ile değil, "tıpkı böyle" kapattığını ve fiyatın kapanma anına kadar farklı puanları geçtiğini keşfettim. Aynı zamanda, danışman birkaç sent ile önceki zararları tamamen karşılar (örneğin, arka arkaya üç anlaşma (-15.59$) karlı bir anlaşma verdi=+15.62$ ve hemen kapattı!)
belirtilen parametrelere ulaşıldığında, danışman "dur" moduna geçti - yani "başlat" düğmesi açık, ancak aynı zamanda ticaret durmadı, ancak çok kısa işlemler var, kelimenin tam anlamıyla bir veya iki sent. Bu kadar mı amaçlanmış?
Ayrıca danışmanın bir dizi anlaşmayı al veya dur ve para limiti ile değil, "tıpkı böyle" kapattığını ve fiyatın kapanma anına kadar farklı puanları geçtiğini keşfettim. Aynı zamanda, danışman birkaç sent ile önceki zararları tamamen karşılar (örneğin, arka arkaya üç anlaşma (-15.59$) karlı bir anlaşma verdi=+15.62$ ve hemen kapattı!)
Loglara baktım hata yok...
Kodu düzeltmelerinizle birlikte gönderin. Göreceğiz.
lütfen bana bu basit danışmana hangi işlevi ve nereye ekleyeceğinizi söyleyin,
Halihazırda var olan yöntemlere ek olarak, partiyi başlangıç olana sıfırlamak için,
Mevduat para biriminde belirtilen mevcut pozisyonda bir düşüşe ulaşıldığında mevcut pozisyonu kapatmak ve ardından bir sonrakini açarken lotu başlangıç pozisyonuna sıfırlamak hala mümkün olabilir mi?
//+-----------------------------------------------------------------------------------------------+//| Simple Moving Average.mq4 |//| Copyright 2016, Andrey Minaev |//| https://www.mql5.com/ru/users/id.scorpion |//+-----------------------------------------------------------------------------------------------+#property copyright"Copyright 2016, Andrey Minaev"#property link" https://www.mql5.com/ru/users/id.scorpion "#property version"1.00"#property strict// Параметры советникаexternstring sParametersEA = "" ; // Параметры советникаexterndouble dLots = 0.01 ; // Количество лотовexternint iStopLoss = 30 ; // Уровень убытка (в пунктах)externint iTakeProfit = 30 ; // Уровень прибыли (в пунктах)externint iSlippage = 3 ; // Проскальзование (в пунктах)externint iMagic = 1 ; // Индентификатор советникаexterndouble K_Martin = 2.0 ;
externint OrdersClose = 5 ;
externint DigitsLot = 2 ;
// Параметры индикатораexternstring sParametersMA = "" ; // Параметры индикатораexternint iPeriodMA = 14 ; // Период усреднения// Глобальные переменныеdouble dMA;
//+-----------------------------------------------------------------------------------------------+intOnInit ()
{
// Если брокер использует 3 или 5 знаков после запятой, то умножаем на 10if ( Digits == 3 || Digits == 5 )
{
iStopLoss *= 10 ;
iTakeProfit *= 10 ;
iSlippage *= 10 ;
}
return ( INIT_SUCCEEDED );
}
//+-----------------------------------------------------------------------------------------------+voidOnDeinit ( constint reason)
{
}
//+-----------------------------------------------------------------------------------------------+voidOnTick ()
{
// Получим значение индикатора
dMA = iMA ( Symbol (), 0 , iPeriodMA, 0 , MODE_SMA , PRICE_CLOSE , 0 );
// Если нет открытых ордеров, то входим в условиеif (bCheckOrders() == true )
{
// Если появился сигнал на покупку, то откроем ордер на покупкуif (bSignalBuy() == true )
vOrderOpenBuy();
// Если появился сигнал на продажу, то откроем ордер на продажуif (bSignalSell() == true )
vOrderOpenSell();
}
}
//+-----------------------------------------------------------------------------------------------+//| Функция проверки открытых оредров |//+-----------------------------------------------------------------------------------------------+bool bCheckOrders()
{
// Переберем в цикле ордера, для проверки открытых ордеров данным советникомfor ( int i = 0 ; i <= OrdersTotal (); i++)
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
if (OrderSymbol() == Symbol () && OrderMagicNumber() == iMagic)
return ( false );
return ( true );
}
//+-----------------------------------------------------------------------------------------------+//| Функция поиска сигнала на покупку |//+-----------------------------------------------------------------------------------------------+bool bSignalBuy()
{
if (dMA > Open[ 1 ] && dMA < Close[ 1 ])
return ( true );
return ( false );
}
//+-----------------------------------------------------------------------------------------------+//| Функция поиска сигнала на продажу |//+-----------------------------------------------------------------------------------------------+bool bSignalSell()
{
if (dMA < Open[ 1 ] && dMA > Close[ 1 ])
return ( true );
return ( false );
}
//+-----------------------------------------------------------------------------------------------+//| Функция открытия ордера на покупку |//+-----------------------------------------------------------------------------------------------+void vOrderOpenBuy()
{
int iOTi = 0 ; // Тикет ордера
iOTi = OrderSend ( Symbol (), OP_BUY, LOT(), Ask, iSlippage, 0 , 0 , "" , iMagic, 0 , clrNONE );
// Проверим открылся ли ордерif (iOTi > 0 )
// Есди да, то выставим уровни убытка и прибыли
vOrderModify(iOTi);
else// Если нет, то получим ошибку
vError( GetLastError ());
}
//+-----------------------------------------------------------------------------------------------+//| Функция открытия ордера на продажу |//+-----------------------------------------------------------------------------------------------+void vOrderOpenSell()
{
int iOTi = 0 ; // Тикет ордера
iOTi = OrderSend ( Symbol (), OP_SELL, LOT(), Bid, iSlippage, 0 , 0 , "" , iMagic, 0 , clrNONE );
// Проверим открылся ли ордерif (iOTi > 0 )
// Есди да, то выставим уровни убытка и прибыли
vOrderModify(iOTi);
else// Если нет, то получим ошибку
vError( GetLastError ());
}
//+-----------------------------------------------------------------------------------------------+//| Функция модификации ордера |//+-----------------------------------------------------------------------------------------------+void vOrderModify( int iOTi)
{
int iOTy = - 1 ; // Тип ордераdouble dOOP = 0 ; // Цена открытия ордераdouble dOSL = 0 ; // Стоп Лоссint iMag = 0 ; // Идентификатор советникаdouble dSL = 0 ; // Уровень убыткаdouble dTP = 0 ; // Уровень прибыли// Выберем по тикету открытый ордер, получим некоторые значенияif ( OrderSelect (iOTi, SELECT_BY_TICKET, MODE_TRADES))
{
iOTy = OrderType();
dOOP = OrderOpenPrice();
dOSL = OrderStopLoss();
iMag = OrderMagicNumber();
}
// Если ордер открыл данный советник, то входим в условиеif (OrderSymbol() == Symbol () && OrderMagicNumber() == iMag)
{
// Если Стоп Лосс текущего ордера равен нулю, то модифицируем ордерif (dOSL == 0 )
{
if (iOTy == OP_BUY)
{
dSL = NormalizeDouble (dOOP - iStopLoss * Point , Digits );
dTP = NormalizeDouble (dOOP + iTakeProfit * Point , Digits );
bool bOM = OrderModify(iOTi, dOOP, dSL, dTP, 0 , clrNONE );
}
if (iOTy == OP_SELL)
{
dSL = NormalizeDouble (dOOP + iStopLoss * Point , Digits );
dTP = NormalizeDouble (dOOP - iTakeProfit * Point , Digits );
bool bOM = OrderModify(iOTi, dOOP, dSL, dTP, 0 , clrNONE );
}
}
}
}
//+-----------------------------------------------------------------------------------------------+//| Функция обработки ошибок |//+-----------------------------------------------------------------------------------------------+void vError( int iErr)
{
switch (iErr)
{
case129 : // Неправильная ценаcase135 : // Цена измениласьcase136 : // Нет ценcase138 : // Новые ценыSleep ( 1000 );
RefreshRates();
break ;
case137 : // Брокер занятcase146 : // Подсистема торговли занятаSleep ( 3000 );
RefreshRates();
break ;
}
}
//+-----------------------------------------------------------------------------------------------+double LOT()
{
int n= 0 ;
double OL=dLots;
for ( int j = OrdersHistoryTotal()- 1 ; j >= 0 ; j--)
{
if ( OrderSelect (j, SELECT_BY_POS,MODE_HISTORY))
{
if (OrderSymbol() == Symbol () && OrderMagicNumber() == iMagic)
{
if (OrderProfit()< 0 )
{
if (n== 0 ) OL= NormalizeDouble (OrderLots()*K_Martin,DigitsLot);
n++;
if (n>=OrdersClose) { Comment ( "1" ); return (dLots);}
}
else
{
if (n== 0 ) { Comment ( "2" ); return (dLots);}
else { Comment ( "3" ); return (OL);}
}
}
}
}
return (OL);
}
//------------------------------------------------------------------
Danışmanın gösterge olmadan çalışabilmesi için göstergeye dayalı bir danışman yapmak gerekir. . Bu çizgileri nesneleştirmemek için içinde yazılı olan göstergenin verilerini grafikte göstermek mümkün müdür?
Danışmanın gösterge olmadan çalışabilmesi için göstergeye dayalı bir danışman yapmak gerekir. . Bu çizgileri nesneleştirmemek için içinde yazılı olan göstergenin verilerini grafikte göstermek mümkün müdür?
Vurgulanır...<0 ise, kaybedilen ticaretin çoğu artar
> 0 ise, o zaman karlı bir ticaretin çoğu artar
merhaba.
Danışmanınız hakkında başka bir soru vardı
Bir demo üzerinde test ederken aşağıdakiler oldu:
belirtilen parametrelere ulaşıldığında, danışman "dur" moduna geçti - yani "başlat" düğmesi açık, ancak aynı zamanda ticaret durmadı, ancak çok kısa işlemler var, kelimenin tam anlamıyla bir veya iki sent. Bu kadar mı amaçlanmış?
Ayrıca danışmanın bir dizi anlaşmayı al veya dur ve para limiti ile değil, "tıpkı böyle" kapattığını ve fiyatın kapanma anına kadar farklı puanları geçtiğini keşfettim. Aynı zamanda, danışman birkaç sent ile önceki zararları tamamen karşılar (örneğin, arka arkaya üç anlaşma (-15.59$) karlı bir anlaşma verdi=+15.62$ ve hemen kapattı!)
Loglara baktım hata yok...
merhaba.
Danışmanınız hakkında başka bir soru vardı
Bir demo üzerinde test ederken aşağıdakiler oldu:
belirtilen parametrelere ulaşıldığında, danışman "dur" moduna geçti - yani "başlat" düğmesi açık, ancak aynı zamanda ticaret durmadı, ancak çok kısa işlemler var, kelimenin tam anlamıyla bir veya iki sent. Bu kadar mı amaçlanmış?
Ayrıca danışmanın bir dizi anlaşmayı al veya dur ve para limiti ile değil, "tıpkı böyle" kapattığını ve fiyatın kapanma anına kadar farklı puanları geçtiğini keşfettim. Aynı zamanda, danışman birkaç sent ile önceki zararları tamamen karşılar (örneğin, arka arkaya üç anlaşma (-15.59$) karlı bir anlaşma verdi=+15.62$ ve hemen kapattı!)
Loglara baktım hata yok...
Kodu düzeltmelerinizle birlikte gönderin. Göreceğiz.
Kodu düzeltmelerinizle birlikte gönderin. Göreceğiz.
bu yüzden hala düzeltilmemiş olanı, yerel olanı test ediyorum.
bu yüzden hala düzeltilmemiş olanı, yerel olanı test ediyorum.
Ben herhangi bir hata görmüyorum...
hangi periyotta, hangi çiftte ve hataların meydana geldiği parametrelerin neler olduğunu yazın.
Ben herhangi bir hata görmüyorum...
hangi periyotta, hangi çiftte ve hataların meydana geldiği parametrelerin neler olduğunu yazın.
İşte ayarlar:
timeframe_RSI=0 period_RSI=14 level_buy=30 level_sell=70 Parti=0.01 K_Martin=1.6 Stoploss=200 Takeprofit=1000 CountLoss=100.0 CountProfit=25,0 Magic=777 DigitsLot=2 slippage=3
rapor aşağıda ektedir.
orada "anlaşılmaz" kapanan satırları sarı renkle vurguladım , ne dur, ne al ne de para ile.
ve mavi - neredeyse anında açılıp kapanan işlemler
merhaba!
lütfen bana bu basit danışmana hangi işlevi ve nereye ekleyeceğinizi söyleyin,
Halihazırda var olan yöntemlere ek olarak, partiyi başlangıç olana sıfırlamak için,
Mevduat para biriminde belirtilen mevcut pozisyonda bir düşüşe ulaşıldığında mevcut pozisyonu kapatmak ve ardından bir sonrakini açarken lotu başlangıç pozisyonuna sıfırlamak hala mümkün olabilir mi?
İşte ayarlar:
timeframe_RSI=0 period_RSI=14 level_buy=30 level_sell=70 Parti=0.01 K_Martin=1.6 Stoploss=200 Takeprofit=1000 CountLoss=100.0 CountProfit=25,0 Magic=777 DigitsLot=2 slippage=3
rapor aşağıda ektedir.
orada "anlaşılmaz" kapanan satırları sarı renkle vurguladım , ne dur, ne al ne de para ile.
ve mavi - neredeyse anında açılıp kapanan işlemler
Hangi zaman diliminde?
ve böylece yeni bir alım veya satım ile
Selamlar. Söyle bana, lütfen, MT5'te.
Danışmanın gösterge olmadan çalışabilmesi için göstergeye dayalı bir danışman yapmak gerekir. .
Bu çizgileri nesneleştirmemek için içinde yazılı olan göstergenin verilerini grafikte göstermek mümkün müdür?
Selamlar. Söyle bana, lütfen, MT5'te.
Danışmanın gösterge olmadan çalışabilmesi için göstergeye dayalı bir danışman yapmak gerekir. .
Bu çizgileri nesneleştirmemek için içinde yazılı olan göstergenin verilerini grafikte göstermek mümkün müdür?
ChartIndicatorAdd()