编码帮助 - 页 747

 
我希望这个屏幕显示的正是我想要的东西:)
附加的文件:
 
skyler1234321:
我希望这个屏幕显示的正是我想要的东西:)

如果你使用的是HighLowCandle > 0,那么它在收盘的蜡烛上是缺席的。

将UseBarDirection设置为 "true",然后检查 它。

 

是的,我在设置里有这个功能。这是我测试的设置

可能是代码有问题。你能在里面检查一下 吗?

附加的文件:
2.PNG  25 kb
 
cja:

是否有任何简单的方法来访问MT5指标数据,以便在图表上显示。我知道最初MT5刚出来的时候,对于一个简单的指标来说,代码是相当复杂的,我希望最新版本的MT5可能有所改变?

例如,如果我想在MT4的图表对象上显示一个MA交叉,我使用

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)。

如果(ma_fast > ma_slow){ col = clrLime;}。

如果(ma_fast < ma_slow) {col = clrRed;}

否则 {col = clrGray;}


在MT5中是否有任何简单的等价物?或者我必须写无数行的代码来获取这些信息?

你好,cja

首先感谢你在2017年访问TSD,然后祝你新年快乐,因为你是非常罕见的访问TSD,但却是非常老的、资深的和专家级的成员:)

问候

 

我正试图改变这个 "带步跟踪 "的程序。
我需要从止损点开始移动,而不是从买入/卖出入口开始...

例如。(买入操作)

StopLoss: 250 (点数)
Traling :150 (点数)
TralingStep: 50 (点数)
===========

买入入口=>1000
止损=>750 (=1000-250)

================
第一个价格变化)价格移动到。1150

(我不需要这个。;-( )
追踪显示将我的止损移动到 "买入入口" =>1000

(但我需要这个)
追踪显示将我的止损移动到 =>800 (=止损+追踪步数)

第二次价格变化) 价格移动到。1300
追踪显示移动到=> 950 (=StopLoss+Trailingstep)


实际的代码使用了尾随和尾随步骤,但我需要修改它...
当(价格移动)达到尾随点时,它使用尾随步骤来移动止损,但实际的代码
将止损移动到操作的入口点(而我不希望这样)。

我需要。

当买入时:如果达到尾盘,尾盘应从实际止损中减去。(NewStopLoss = LastStoploss - TrailingStep)
当卖出开仓时:如果达到尾盘,应从实际止损中加上尾盘。(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:

我想改变这个 "追踪 "的步骤。
我需要从止损点开始移动,而不是从买入/卖出入口开始...

比如说(买入操作)

止损:250(点)
Traling :150 (单位:点)
TralingStep: 50 (单位:点)
===========

买入入口=>1000
止损=>750 (=1000-250)

================
第一个价格变化)价格移动到。1150

(我不需要这个... ;-( )
追踪是将我的止损移到 "买入"=>1000

(但我需要这个)
追踪应该把我的止损移到 =>800 (=止损+追踪步数)

第二个价格变化)价格移动到。1300
追踪显示移动到=> 950 (=StopLoss+Trailingstep)


实际代码中使用了尾随和尾随步骤,但我需要修改它...
当(价格移动)达到追踪点时,它使用追踪步骤来移动止损,但实际的代码是
将止损移至操作的进场点(我不希望这样)。

我需要。

当买入时:如果达到追踪点,追踪点应从实际止损中减去。(NewStopLoss = LastStoploss - TrailingStep)
当卖出开仓时:如果达到尾盘,应从实际止损中加上尾盘步骤。(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

Timmy和我正在尝试玩(复制/粘贴)一个简单的EA,有基本的卖出/买入趋势变化,基于 "平均数-MTF-警报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

Timmy和我正在尝试玩(复制/粘贴)一个简单的EA,有基本的卖出/买入趋势变化,基于 "平均数-MTF-警报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代表趋势下降。

 

亲爱的Mladen先生。


我需要一个直方图指标用于我的策略交易,现在我使用XB4指标和Bandit策略指标,但它们没有警报和通知发送 至电子邮件或我的安卓MT4。

你是否有修改过的指标XB4d指标,它有发送电子邮件的警报和发送安卓手机的通知,如果直方图的颜色由蓝变红,或者在第一个柱子上由红变蓝。

而Bandid系统指标的直方图趋势会议,颜色从蓝色变为红色,或从红色变为蓝色,这是趋势变化的第一个颜色。

你能帮助我了解一下这个指标吗,Mladen先生?




问候。

萨缪尔

附加的文件:
bandit.PNG  56 kb
XB4.PNG  46 kb