Помощь в кодировании - страница 747

 
Я надеюсь, что этот экран показывает именно то, что я хочу :)
Файлы:
 
skyler1234321:
Надеюсь, этот экран показывает именно то, что я хочу :)

Если вы используете HighLowCandle > 0, то он отсутствует на закрытой свече.

Установите параметр UseBarDirection в true и проверьте его.

 

Да, у меня есть это в настройках. Вот мои настройки, которые я тестировал

Возможно, в коде что-то не так. Не могли бы вы проверить внутри?

Файлы:
2.PNG  25 kb
 
cja:

Существует ли простой способ доступа к данным индикатора MT5 для отображения на графике. Я знаю, что изначально, когда MT5 только появился, код был довольно сложным для простого индикатора, и я надеюсь, что в последней версии MT5 что-то изменилось?

Например, если я хочу показать пересечение МА на графике объекта с MT4, я использую

double slow_MA = iMA(Symbol(),0,100,0,MA_MODE,MA_PRICE,0);

double fast_MA = iMA(Symbol(),0,35,0,MA_MODE,MA_PRICE,0);

if (ma_fast > ma_slow){ col = clrLime;}

if (ma_fast < ma_slow) {col = clrRed;}

else {col = clrGray;}


Есть ли какой-нибудь простой эквивалент в MT5? Или мне придется писать бесчисленные строки кода, чтобы получить доступ к этой информации?

Привет cja

Во-первых, спасибо за ваше посещение TSD в 2017 году, затем С Новым годом вас, так как вы очень редко посещаете TSD, но очень старый, старший и экспертный член :)

с уважением

 

Я пытаюсь изменить эту рутину "Трейлинг с шагом".
Мне нужно двигаться от стоплосса, а не от входа в покупку/продажу...

например: (операция BUY)

StopLoss: 250 (в пунктах)
Traling :150 (в пунктах)
TralingStep: 50 (в пунктах)
===========

BUY Вход=> 1000
StopLoss=>750 (=1000-250)

================
Первое изменение цены) Цена переместилась на: 1150

(Мне это не нужно... ;-( )
Трейлинг перемещает мой стоплосс на "buy_entrance" =>1000

(Но мне это нужно)
Трейлинг должен переместить мой стоплосс на => 800 (=StopLoss+Trailingstep)

Второе изменение цены) Цена переместилась на: 1300
Трейлинг должен быть перемещен на => 950 (=StopLoss+Trailingstep).


фактический код использует трейлинг и шаг трейлинга, но мне нужно изменить его...
когда (цена переместилась) трейлинг в пунктах достигнут и он использует шаг трейлинга для перемещения стоп лосса, но фактический код
перемещает стоплосс в точку входа операции (и я не хочу этого).

Мне нужно:

при открытии BUY: если трейлинг достигнут, то шаг трейлинга должен быть вычтен из фактического стоплосса. (NewStopLoss = LastStoploss - TrailingStep)
при открытии SELL: если трейлинг достигнут, то шаг трейлинга должен быть добавлен от фактического стоплосса. (NewStopLoss = LastStoploss +TrailingStep)

#include <Trade/Trade.mqh>
#include <Trade/SymbolInfo.mqh>
#include <Trade/PositionInfo.mqh>
CTrade Trade;
CSymbolInfo Sym;
CPositionInfo Pos;

int
 Trailing = 150;
int TrailingStep = 25;

void fSimpleTrailingStep(){   //mt5
   if(Trailing<=0){
      return;
   }         
   if(!Pos.Select(_Symbol)){
      return;
   }         
   if(!Sym.RefreshRates()){
      return;  
   }   
   double nsl,tmsl,psl,newstop;  
   switch(Pos.PositionType()){
      case POSITION_TYPE_BUY:
         nsl=Sym.NormalizePrice(Sym.Bid()-_Point*Trailing);
            if(nsl>=Sym.NormalizePrice(Pos.PriceOpen())){
               //if(nsl>Sym.NormalizePrice(Pos.StopLoss())){
               if(nsl>=Sym.NormalizePrice(Pos.StopLoss()+_Point*TrailingStep)){  //////////////
                  //tmsl=Sym.NormalizePrice(Sym.Bid()-_Point*Sym.StopsLevel());
                   tmsl=Sym.NormalizePrice(Sym.Bid()-_Point*Sym.StopsLevel());
                     if(nsl<tmsl){
                        //Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                        newstop=Sym.NormalizePrice(Pos.StopLoss()+_Point*TrailingStep);
                        Trade.PositionModify(_Symbol,newstop,Pos.TakeProfit());
                        Print ("(BUY) Trailing :"+Pos.StopLoss());
                     }
               }
            }
      break;
      case POSITION_TYPE_SELL:
         nsl=Sym.NormalizePrice(Sym.Ask()+_Point*Trailing);
            //if(nsl<=Sym.NormalizePrice(Pos.PriceOpen())){             
            if(nsl<=Sym.NormalizePrice(Pos.PriceOpen())-_Point*TrailingStep){   //////////////
               psl=Sym.NormalizePrice(Pos.StopLoss());
                  if(nsl<psl || psl==0){
                     tmsl=Sym.NormalizePrice(Sym.Ask()+_Point*Sym.StopsLevel());
                        if(nsl>tmsl){
                           newstop=Sym.NormalizePrice(Pos.StopLoss()-_Point*TrailingStep);
                           //Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                           Trade.PositionModify(_Symbol,newstop,Pos.TakeProfit());
                           Print ("(SELL) Trailing :"+Pos.StopLoss());
                        }
                  }
            }      
      break;
   }
}
 
baraozemo:

Я пытаюсь изменить эту рутину "Трейлинг с шагом".
Мне нужно двигаться от стоплосса, а не от входа в покупку/продажу...

например: (операция BUY)

StopLoss: 250 (в пунктах)
Traling :150 (в пунктах)
TralingStep: 50 (в пунктах)
===========

Вход BUY=> 1000
StopLoss=>750 (=1000-250)

================
Первое изменение цены) Цена переместилась к: 1150

(Мне это не нужно... ;-( )
Трейлинг перемещает мой стоплосс на "buy_entrance" =>1000

(Но мне это нужно)
Трейлинг должен переместить мой стоплосс на => 800 (=StopLoss+Trailingstep)

Второе изменение цены) Цена переместилась на: 1300
Трейлинг должен переместить стоплосс на => 950 (=StopLoss+Trailingstep)


фактический код использует трейлинг и шаг трейлинга, но мне нужно изменить его...
когда (цена двинулась) трейлинг в пунктах достигнут и он использует шаг трейлинга для перемещения стоп-лосса, но фактический код
перемещает стоплосс в точку входа в операцию (а я этого не хочу)

Мне нужно:

при открытии BUY: если трейлинг достигнут, то шаг трейлинга должен быть вычтен из фактического стоплосса. (NewStopLoss = LastStoploss - TrailingStep)
при открытии SELL: если трейлинг достигнут, шаг трейлинга должен быть добавлен от фактического стоплосса. (NewStopLoss = LastStoploss +TrailingStep)

#include <Trade/Trade.mqh>
#include <Trade/SymbolInfo.mqh>
#include <Trade/PositionInfo.mqh>
CTrade Trade;
CSymbolInfo Sym;
CPositionInfo Pos;

int
 Trailing = 150;
int TrailingStep = 25;

void fSimpleTrailingStep(){   //mt5
   if(Trailing<=0){
      return;
   }         
   if(!Pos.Select(_Symbol)){
      return;
   }         
   if(!Sym.RefreshRates()){
      return;  
   }   
   double nsl,tmsl,psl,newstop;  
   switch(Pos.PositionType()){
      case POSITION_TYPE_BUY:
         nsl=Sym.NormalizePrice(Sym.Bid()-_Point*Trailing);
            if(nsl>=Sym.NormalizePrice(Pos.PriceOpen())){
               //if(nsl>Sym.NormalizePrice(Pos.StopLoss())){
               if(nsl>=Sym.NormalizePrice(Pos.StopLoss()+_Point*TrailingStep)){  //////////////
                  //tmsl=Sym.NormalizePrice(Sym.Bid()-_Point*Sym.StopsLevel());
                   tmsl=Sym.NormalizePrice(Sym.Bid()-_Point*Sym.StopsLevel());
                     if(nsl<tmsl){
                        //Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                        newstop=Sym.NormalizePrice(Pos.StopLoss()+_Point*TrailingStep);
                        Trade.PositionModify(_Symbol,newstop,Pos.TakeProfit());
                        Print ("(BUY) Trailing :"+Pos.StopLoss());
                     }
               }
            }
      break;
      case POSITION_TYPE_SELL:
         nsl=Sym.NormalizePrice(Sym.Ask()+_Point*Trailing);
            //if(nsl<=Sym.NormalizePrice(Pos.PriceOpen())){             
            if(nsl<=Sym.NormalizePrice(Pos.PriceOpen())-_Point*TrailingStep){   //////////////
               psl=Sym.NormalizePrice(Pos.StopLoss());
                  if(nsl<psl || psl==0){
                     tmsl=Sym.NormalizePrice(Sym.Ask()+_Point*Sym.StopsLevel());
                        if(nsl>tmsl){
                           newstop=Sym.NormalizePrice(Pos.StopLoss()-_Point*TrailingStep);
                           //Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                           Trade.PositionModify(_Symbol,newstop,Pos.TakeProfit());
                           Print ("(SELL) Trailing :"+Pos.StopLoss());
                        }
                  }
            }      
      break;
   }
}
Ваш начальный старт всегда должен быть от начального входа в покупку/продажу (других критериев не существует)
 

Уважаемый MLADEN

Мы с Тимми пытаемся играть (копировать/вставить) с простым советником с базовой продажей/покупкой на изменении тренда, основанного на "средних - mtf - alerts 8.7", так как мы оба ноль в вопросах кодирования, пожалуйста, помогите и подскажите, как кодировать (icustom) для этой версии средних.

с уважением



     double Averages_trend_current  = iCustom(NULL,0,"averages - mtf - alerts  8.7",PERIOD_CURRENT,AveragePeriod,AveragePrice,AverageMethod,DoubleSmoothedAverage,AdaptiveAverage,FilterPeriod,FilterOn,BarToUse);

     double Averages_trend_previous = iCustom(NULL,0,"averages - mtf - alerts  8.7",PERIOD_CURRENT,AveragePeriod,AveragePrice,AverageMethod,DoubleSmoothedAverage,AdaptiveAverage,FilterPeriod,FilterOn,BarToUse+1);


Файлы:
 
mntiwana:

Уважаемый MLADEN

Мы с Тимми пытаемся играть (копировать/вставить) с простым советником с базовой продажей/покупкой на изменении тренда, основанного на "средних - mtf - alerts 8.7", так как мы оба ноль в вопросах кодирования, пожалуйста, помогите и подскажите, как кодировать (icustom) для этой версии средних.

с уважением



     double Averages_trend_current  = iCustom(NULL,0,"averages - mtf - alerts  8.7",PERIOD_CURRENT,AveragePeriod,AveragePrice,AverageMethod,DoubleSmoothedAverage,AdaptiveAverage,FilterPeriod,FilterOn,BarToUse);

     double Averages_trend_previous = iCustom(NULL,0,"averages - mtf - alerts  8.7",PERIOD_CURRENT,AveragePeriod,AveragePrice,AverageMethod,DoubleSmoothedAverage,AdaptiveAverage,FilterPeriod,FilterOn,BarToUse+1);


Что-то не так с буферами, я использовал буфер: 2 для покупки и оба буфера 3 и 4 для продажи, но все срабатывает постоянно, пробовал использовать только буфер 2 для покупки и буфер 3 для продажи, но произошло то же самое.
 
timmyhanke:
Что-то не так с буферами, я использовал буфер: 2 для покупки и оба буфера 3 и 4 для продажи, но все срабатывает постоянно, пробовал использовать только буфер 2 для покупки и буфер 3 для продажи, но произошло то же самое.

С буферами все в порядке. Используйте буфер 9: 1 для тренда вверх, -1 для тренда вниз.

 

Уважаемый господин Младен,


Мне нужен индикатор гистограммы для моей стратегии торговли, сейчас я использую индикатор XB4 и индикатор стратегии Bandit. но они не имеют оповещения и уведомления, отправляемые на электронную почту или на мой андроид MT4.

Есть ли у вас модифицированный индикатор XB4d ndicator, который имеет оповещения, отправляемые по электронной почте и уведомления, отправляемые на телефон android mobil. если гистограмма меняет цвет с синего на красный, или с красного на синий на первом баре.

и гистограмма трендовой сессии от индикатора Bandid system, которая меняет цвет с синего на красный, или с красного на синий, первый цвет меняющегося тренда.

Не могли бы вы помочь мне с этим индикатором, господин Младен.




с уважением,

Самуэль

Файлы:
bandit.PNG  56 kb
XB4.PNG  46 kb
Причина обращения: