我将写一个免费的mql4顾问 - 页 13

 
oleg3791: 顾问在图表上点击了五次鼠标就画了四条线。

黄线为必填项

#property strict

int      Количество;
datetime старый, новый=0;
double   старая, новая=0;

void OnInit()
{
  Количество=0;
  ObjectsDeleteAll(0, "Линия");
}

void OnChartEvent(const int     id,  // идентификатор события   
                  const long &x, const double &yy,
                  const string& s)
{
  if(id!=CHARTEVENT_CLICK) return;
  if(Количество>4){OnInit();return;}
  string name[5]={"","Линия_1","Линия_2","Линия_3","Линия_4"};
  int y=int(yy);
  int O;
  старый=новый; старая=новая;
  ChartXYToTimePrice(0,int(x),y,O,новый,новая); // xy ---> время,цену
  if(Количество>0)
  ObjectCreate(name[Количество],OBJ_TREND,0,старый,старая,новый,новая);
  ObjectSet(name[Количество],OBJPROP_RAY,false);
  ObjectSet(name[Количество],OBJPROP_COLOR,Gold);
  ObjectSet(name[Количество],OBJPROP_WIDTH,2);
  Количество++; 
}

void OnDeinit(const int причина)
{
  OnInit();
}
 
STARIJ:

需要黄线

谢谢你!!!。
 
oleg3791:   谢谢你!!!。

现在告诉我如何在这里获利......或者是建立一个游戏?

 

大家好,能不能帮我找到EA代码中的一个错误,我想我已经看完了,代码中似乎都写得很正确,但是程序不知道为什么不能正常交易!我想知道为什么?这个想法是这样的:顾问必须寻找两个相同方向的长蜡烛(蜡烛之间的长度在顾问中可以调整,即在两个最低或最高蜡烛之间,取决于方向),如果相反方向的价格突破了最后一根蜡烛的最低或最高值,交易应该打开(文件所附图表中的示例图片情况)。顾问应该在每个合适的情况下打开交易,但由于某些原因,它只在几天之间的交易窗口打开交易。情况是这样的,谁也不难从程序员的角度出发,请帮助,修复错误。EA代码见下文以及附件文件。

//+-----------------------------------------------------------------------------------------------+
//|                                                                           Spacing_Candles.mq4 |
//|                                                                        Copyright 2017, Vladim |
//|                                                                            vk.com/id229534564 |
//|                                                                  Mail: Vladim120385@yandex.ru |
//+-----------------------------------------------------------------------------------------------+
#property copyright "Copyright 2017, Vladim"
#property link      "vk.com/id229534564"
#property version   "1.00"
#property strict

//--- параметры советника
extern string paramEA    = "";     // Parameters EA
extern double volume     = 0.01;   // Volume
extern double stopLoss   = 5;     // StopLoss
extern double takeProfit = 1.5;    // TakeProfit
extern double maxSpacing = 150;   // MaxSpacing
extern double minSpacing = 30;    // MinSpacing
extern double TrailingStop  = 0;   // TrailingStop
extern int    magic      = 127;    // Magic

//--- глобальные переменные
datetime newCandle;
int tip;

//+-----------------------------------------------------------------------------------------------+
int OnInit()
{
   
   return(INIT_SUCCEEDED);
}
//+-----------------------------------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   
}
//+-----------------------------------------------------------------------------------------------+
void OnTick()
{
   if(newCandle != Time[0]) FindPattern();
   newCandle = Time[0];
}
//+-----------------------------------------------------------------------------------------------+
void OpenOrder(int type)   // Откроем рыночный ордер
{
   if(type == OP_BUY)  if(OrderSend(_Symbol, OP_BUY,  volume, Ask, 0, 0, 0, "", magic, 0)) SetSLTP(OP_BUY);
   if(type == OP_SELL) if(OrderSend(_Symbol, OP_SELL, volume, Bid, 0, 0, 0, "", magic, 0)) SetSLTP(OP_SELL);
}
//+-----------------------------------------------------------------------------------------------+
void SetSLTP(int type)   // Установим стоп приказы
{
   double sl = 0;
   double tp = 0;
   
   if(type == OP_BUY)
      for(int i = 0; i < OrdersTotal(); i++)
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
            if(OrderSymbol() == _Symbol && OrderMagicNumber() == magic && OrderType() == OP_BUY && OrderStopLoss() == 0)
            {
               sl = NormalizeDouble(Low[1] - stopLoss * _Point, _Digits);
               tp = NormalizeDouble(OrderOpenPrice() + (OrderOpenPrice() - Low[1]) * takeProfit, Digits);
               if(OrderModify(OrderTicket(), OrderOpenPrice(), sl, tp, 0)) return;
            }
   if(type == OP_SELL)
      for(int i = 0; i < OrdersTotal(); i++)
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
            if(OrderSymbol() == _Symbol && OrderMagicNumber() == magic && OrderType() == OP_SELL && OrderStopLoss() == 0)
            {
               sl = NormalizeDouble(High[1] + stopLoss * _Point, _Digits);
               tp = NormalizeDouble(OrderOpenPrice() - (High[1] - OrderOpenPrice()) * takeProfit, Digits);
               if(OrderModify(OrderTicket(), OrderOpenPrice(), sl, tp, 0)) return;
            }
}
//+-----------------------------------------------------------------------------------------------+
void FindPattern()   // Ищем большое расстояние между свечами
{
   if(High[1] < High[2] && Bid > High[1] && Low[1] < Low[2])
   {
      double spacing = NormalizeDouble((High[2] - High[1]) / _Point, 0);
            
      if(maxSpacing >= spacing && minSpacing <= spacing)
         OpenOrder(OP_BUY);
   }
   if(Low[1] > Low[2] && Bid < Low[1] && High[1] > High[2])
   {
      double spacing = NormalizeDouble((Low[1] - Low[2]) / _Point, 0);
            
      if(maxSpacing >= spacing && minSpacing <= spacing)
         OpenOrder(OP_SELL);
   }   
   {
      if (TrailingStop!=0) TrailingStop();      
   }
}
//+-----------------------------------------------------------------------------------------------+
void TrailingStop()
{
   double StLo,OSL,OOP;
   bool error=true;   
   for (int i=0; i<OrdersTotal(); i++) 
   {
      if (OrderSelect(i, SELECT_BY_POS))
      {
         tip = OrderType();
         if (tip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
         {
            OSL   = NormalizeDouble(OrderStopLoss(),Digits);
            OOP   = NormalizeDouble(OrderOpenPrice(),Digits);
            if (tip==0)        
            {  
               StLo = NormalizeDouble(Bid - TrailingStop*Point,Digits);
               if (StLo < OOP) continue;
               if (StLo > OSL)
                  error=OrderModify(OrderTicket(),OrderOpenPrice(),StLo,OrderTakeProfit(),0,White);

            }                                         
            if (tip==1)    
            {                                         
               StLo = NormalizeDouble(Ask + TrailingStop*Point,Digits);           
               if (StLo > OOP) continue;
               if (StLo < OSL || OSL==0 )
                  error=OrderModify(OrderTicket(),OrderOpenPrice(),StLo,OrderTakeProfit(),0,White);
            } 
            if (!error) Alert("Error TrailingStop ",GetLastError(),"   ",Symbol(),"   SL ",StLo);
         }
      }
   }
}
//+-----------------------------------------------------------------------------------------------+


EA应该如何投注 "图表的照片

附加的文件:
 
Vladim1203:

大家好,能不能帮我找到EA代码中的一个错误,我想我已经全部看完了,代码中似乎写得很正确,但程序不知道为什么不能正常交易!我想知道为什么?这个想法是这样的:顾问必须寻找两个相同方向的长蜡烛(蜡烛之间的长度在顾问中可以调整,即在两个最低或最高蜡烛之间,取决于方向),如果相反方向的价格突破了最后一根蜡烛的最低或最高值,交易应该打开(文件所附图表中的示例图片情况)。顾问应该在每个合适的情况下打开交易,但由于某些原因,它只在几天之间的交易窗口打开交易。情况是这样的,谁也不难从程序员的角度出发,请帮助,修复错误。请看下面的EA代码以及附件中的文件。

最好先写出EA的部分内容,将发现的蜡烛标记在图表上,这样一切都会变得清晰。而下面这几行在你的情况下是不必要的。

extern string paramEA    = "";     // Parameters EA

и

//+-----------------------------------------------------------------------------------------------+
int OnInit()
{
   
   return(INIT_SUCCEEDED);
}
//+-----------------------------------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   
}
//+-----------------------------------------------------------------------------------------------+
 
STARIJ:

现在告诉我如何在这里获利......或者你需要它来建立一个游戏?


目前还没有办法获得利润。有一种算法用于计算两个可能的价格目标,沿着趋势,由五个主要点,但它是在一个特殊的服务器上计算的,需要付费订阅。我想自己计算目标,关于算法的工作还没有结束。

你的程序在MQL4中会是什么样子?

 
Anton Yakovlev:
如果你有好的策略并愿意分享,我可以写一个EA。我邀请你公开或在私人信息中讨论它。

安东,帮帮我吧,我在EA中加入了追踪止损功能,我已经编译了,但它显示了两个错误。- 我的头被撞破了,我想不出如何修复它们以获得猫头鹰。然而交易在价格分别触及通道的上限和下限后,根据旧的策略被关闭。我想这里也必须要改变一些东西。- 回电给dnr军队的人。

#property copyright "Copyright 2017, MetaQuotes Software Corp."

#属性链接 "https://www.mql5.com"

#财产版本 "1.00"

#属性严格


//---------------------------------------------------------

外来的双倍Lots = 0.01。

外置 int TakeProfit = 600;

外来的int StopLoss = 25;

外来的int Magic = 0001;

外置 int Slippage = 3;

extern int TralType = 0; // 0-SAR, 1-ATR, 2-HMA.

外部双SAR_Step = 0.02。

外置双SAR_Max = 0.2。

外置 int ATR_Period = 14;

外置双倍ATR_K = 2.0。

外来的HMA_Period = 16。

外部实习生HMA_Method = 3;

外部inttern HMA_Shift = 0;

datetime LBT;

//---------------------------------------------------------

extern string TMA = "TMA指标参数"。

外部字符串 TimeFrame = "当前时间框架"。

外置 int HalfLength = 56;

外部int Price = "PRICE_CLOSE;

外置双倍ATRMultiplier = 2.0。

外部的ATRPeriod = 100。

外部 bool Interpolate = true。

//---------------------------------------------------------

双重PriceHigh, PriceLow, SL, TP。

int票。


//+------------------------------------------------------------------+

//|专家初始化功能|

//+------------------------------------------------------------------+

int OnInit()

{

如果(Digits == 3 || Digits == 5)

{

TakeProfit *= 10。

StopLoss *= 10;

滑移*=10。

}

return(INIT_SUCCEEDED)。

}

//+------------------------------------------------------------------+

//|专家去初始化函数|

//+------------------------------------------------------------------+

空白的OnDeinit(const int reason)。

{


}

//+------------------------------------------------------------------+

//|专家勾选功能|

//+------------------------------------------------------------------+

空白的OnTick()

{

PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);

PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);

如果(CountSell() == 0 && Bid >= PriceHigh)

{

ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "TMA robot", Magic, 0, Red);

如果 (ticket > 0)

{

SL = NormalizeDouble(Bid + StopLoss*Point, Digits)。

TP = NormalizeDouble(Bid - TakeProfit*Point, Digits)。

如果(OrderSelect(ticket, SELECT_BY_TICKET))

如果(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))

Print(" 订单修改错误!")

}

}

如果(CountBuy() == 0 && Ask <= PriceLow)

{

ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robot", Magic, 0, Blue);

如果 (ticket > 0)

{

TP = NormalizeDouble(Ask + TakeProfit*Point, Digits)。

SL = NormalizeDouble(Ask - StopLoss*Point, Digits);

如果(OrderSelect(ticket, SELECT_BY_TICKET))

if(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))

Print("修改买入订单错误!")

} else Print("打开买入订单出错")。

}

//+------------------------------------------------------------------+

//|专家初始化功能|

//+------------------------------------------------------------------+

int init()

{

//--------


//--------

返回(0)。

}

//+------------------------------------------------------------------+

//|专家勾选功能|

//+------------------------------------------------------------------+

空白的OnTick()

{

PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);

PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);

如果(CountSell() == 0 && Bid >= PriceHigh)

{

ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "TMA robot", Magic, 0, Red);

如果 (ticket > 0)

{

SL = NormalizeDouble(Bid + StopLoss*Point, Digits)。

TP = NormalizeDouble(Bid - TakeProfit*Point, Digits)。

如果(OrderSelect(ticket, SELECT_BY_TICKET))

如果(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))

Print("修改卖出订单错误!")

} else Print("打开卖出订单出错!")

}

如果(CountBuy() == 0 && Ask <= PriceLow)

{

ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robot", Magic, 0, Blue);

如果 (ticket > 0)

{

TP = NormalizeDouble(Ask + TakeProfit*Point, Digits)。

SL = NormalizeDouble(Ask - StopLoss*Point, Digits);

如果(OrderSelect(ticket, SELECT_BY_TICKET))

if(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))

Print("修改买入订单错误!")

} else Print("打开买入订单出错")。

}

如果(Ask <= PriceLow && CountSell() > 0)

{

for (int i = OrdersTotal() -1; i>0; i--)

{

如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

如果(OrderMagicNumber() == Magic && OrderType() == OP_SELL)

如果(!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Black))

Print("卖出订单关闭错误!")

}

}

}

如果(Bid >= PriceHigh && CountBuy() > 0)

{

for (int i = OrdersTotal() -1; i>0; i--)

{

如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

如果(OrderMagicNumber() == Magic && OrderType() == OP_BUY)

if(!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Black))

Print("OrderClose Buy error!)

}

}

}

}

//+------------------------------------------------------------------+

int CountSell()

{

int count = 0。

for (int trade = OrdersTotal()-1; trade>=0; trade--)

{

如果(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))

{

如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)

count++。

}

}

return(count)。

}//+------------------------------------------------------------------+

int CountBuy()

{

int count = 0。

for (int trade = OrdersTotal()-1; trade>=0; trade--)

{

如果(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))

{

如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)

count++。

}

}

return(count)。

}

//+------------------------------------------------------------------+

//|专家去初始化函数|

//+------------------------------------------------------------------+

int deinit()

{

//+-------


//+-------

返回 (0)

}

//+------------------------------------------------------------------+

//|专家启动功能|

//+------------------------------------------------------------------+

int Start()

{

//-----

bool error = fals;

如果(LBT!=Time[0]) {

如果(OrdersTotal()!=0) {

for (int i=0; i<OrdersTotal(); i++){

如果(OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()<2){

double SL = OrderStopLoss();

如果OrderType()==0) {

switch (TralType) {

case 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);

突破。

case 1: SL = High[1] - iATR(NULL,0,ATR,Period,1)*ATR_K;

突破。

case 2: SL = iCustom(NULL,0, "VininI_HMAsound&amp",HMA_Period,HMA_Method,3,HMA_Shift,fals,fals," ,1,0,0)。

突破。

}

如果(SL<OrderStopLoss())

SL = OrderStopLoss()。

}

如果(OrderType()==1) {

switch (TralType) {

case 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);

突破。

case 1: SL = Low[1] + iATR(NULL,0,ATR,Period,1)*ATR_K;

突破。

case 2: SL = iCustom(NULL,0, "VininI_HMAsound&amp",HMA_Period,HMA_Method,3,HMA_Shift,fals,fals," ,1,0,0)。

突破。

}

如果(SL>OrderStopLoss())

SL = OrderStopLoss()。

}

如果(SL!=OrderStopLoss()){

if(!OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0))

error = true。

}

}

}

}

if (!error)

LBT = Time[0]。

}

返回(0)。

}

//+------------------------------------------------------------------+

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
Выберите подходящую торговую стратегию и оформите подписку на нее в пару кликов. Все Сигналы сопровождаются подробной статистикой и графиками. Станьте Поставщиком торговых сигналов и продавайте подписку тысячам трейдеров по всему миру. Наш сервис позволит вам хорошо зарабатывать на прибыльной стратегии даже при небольшом стартовом капитале...
 
Andrey Luxe:

为了获得这方面的经验,我将免费为你的有趣想法和策略编写25个EA。

只剩下19个EA了


在EA中添加了尾随止损功能,我对它进行了评论,但它产生了两个错误。- 我可能有一些错误,但我不知道如何修复它们。然而交易在价格分别触及通道的上限和下限后,根据旧的策略被关闭。我想这里也必须要改变一些东西。- 回电给dnr军队的人。

#property copyright "Copyright 2017, MetaQuotes Software Corp."

#属性链接 "https://www.mql5.com"

#财产版本 "1.00"

#属性严格


//---------------------------------------------------------

外来的双倍Lots = 0.01。

外置 int TakeProfit = 600;

外来的int StopLoss = 25;

外来的int Magic = 0001;

外置 int Slippage = 3;

extern int TralType = 0; // 0-SAR, 1-ATR, 2-HMA.

外部双SAR_Step = 0.02。

外置双SAR_Max = 0.2。

外置 int ATR_Period = 14;

外置双倍ATR_K = 2.0。

外来的HMA_Period = 16。

外部实习生HMA_Method = 3;

外部inttern HMA_Shift = 0;

datetime LBT;

//---------------------------------------------------------

extern string TMA = "TMA指标参数"。

外部字符串 TimeFrame = "当前时间框架"。

外置 int HalfLength = 56;

外部int Price = "PRICE_CLOSE;

外置双倍ATRMultiplier = 2.0。

外部的ATRPeriod = 100。

外部 bool Interpolate = true。

//---------------------------------------------------------

双重PriceHigh, PriceLow, SL, TP。

int票。


//+------------------------------------------------------------------+

//|专家初始化功能|

//+------------------------------------------------------------------+

int OnInit()

{

如果(Digits == 3 || Digits == 5)

{

TakeProfit *= 10。

StopLoss *= 10;

滑移*=10。

}

return(INIT_SUCCEEDED)。

}

//+------------------------------------------------------------------+

//|专家去初始化函数|

//+------------------------------------------------------------------+

空白的OnDeinit(const int reason)。

{


}

//+------------------------------------------------------------------+

//|专家勾选功能|

//+------------------------------------------------------------------+

空白的OnTick()

{

PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);

PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);

如果(CountSell() == 0 && Bid >= PriceHigh)

{

ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "TMA robot", Magic, 0, Red);

如果 (ticket > 0)

{

SL = NormalizeDouble(Bid + StopLoss*Point, Digits)。

TP = NormalizeDouble(Bid - TakeProfit*Point, Digits)。

如果(OrderSelect(ticket, SELECT_BY_TICKET))

如果(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))

Print(" 订单修改错误!")

}

}

如果(CountBuy() == 0 && Ask <= PriceLow)

{

ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robot", Magic, 0, Blue);

如果 (ticket > 0)

{

TP = NormalizeDouble(Ask + TakeProfit*Point, Digits)。

SL = NormalizeDouble(Ask - StopLoss*Point, Digits);

如果(OrderSelect(ticket, SELECT_BY_TICKET))

if(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))

Print("修改买入订单错误!")

} else Print("打开买入订单出错")。

}

//+------------------------------------------------------------------+

//|专家初始化功能|

//+------------------------------------------------------------------+

int init()

{

//--------


//--------

返回(0)。

}

//+------------------------------------------------------------------+

//|专家勾选功能|

//+------------------------------------------------------------------+

空白的OnTick()

{

PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);

PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);

如果(CountSell() == 0 && Bid >= PriceHigh)

{

ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "TMA robot", Magic, 0, Red);

如果 (ticket > 0)

{

SL = NormalizeDouble(Bid + StopLoss*Point, Digits)。

TP = NormalizeDouble(Bid - TakeProfit*Point, Digits)。

如果(OrderSelect(ticket, SELECT_BY_TICKET))

如果(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))

Print("修改卖出订单错误!")

} else Print("打开卖出订单出错!")

}

如果(CountBuy() == 0 && Ask <= PriceLow)

{

ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robot", Magic, 0, Blue);

如果 (ticket > 0)

{

TP = NormalizeDouble(Ask + TakeProfit*Point, Digits)。

SL = NormalizeDouble(Ask - StopLoss*Point, Digits);

如果(OrderSelect(ticket, SELECT_BY_TICKET))

if(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))

Print("修改买入订单错误!")

} else Print("打开买入订单出错")。

}

如果(Ask <= PriceLow && CountSell() > 0)

{

for (int i = OrdersTotal() -1; i>0; i--)

{

如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

如果(OrderMagicNumber() == Magic && OrderType() == OP_SELL)

如果(!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Black))

Print("卖出订单关闭错误!")

}

}

}

如果(Bid >= PriceHigh && CountBuy() > 0)

{

for (int i = OrdersTotal() -1; i>0; i--)

{

如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

如果(OrderMagicNumber() == Magic && OrderType() == OP_BUY)

if(!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Black))

Print("OrderClose Buy error!)

}

}

}

}

//+------------------------------------------------------------------+

int CountSell()

{

int count = 0。

for (int trade = OrdersTotal()-1; trade>=0; trade--)

{

如果(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))

{

如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)

count++。

}

}

return(count)。

}//+------------------------------------------------------------------+

int CountBuy()

{

int count = 0。

for (int trade = OrdersTotal()-1; trade>=0; trade--)

{

如果(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))

{

如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)

count++。

}

}

return(count)。

}

//+------------------------------------------------------------------+

//|专家去初始化函数|

//+------------------------------------------------------------------+

int deinit()

{

//+-------


//+-------

返回 (0)

}

//+------------------------------------------------------------------+

//|专家启动功能|

//+------------------------------------------------------------------+

int Start()

{

//-----

bool error = fals;

如果(LBT!=Time[0]) {

如果(OrdersTotal()!=0) {

for (int i=0; i<OrdersTotal(); i++){

如果(OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()<2){

double SL = OrderStopLoss();

如果OrderType()==0) {

switch (TralType) {

case 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);

突破。

case 1: SL = High[1] - iATR(NULL,0,ATR,Period,1)*ATR_K;

突破。

case 2: SL = iCustom(NULL,0, "VininI_HMAsound&amp",HMA_Period,HMA_Method,3,HMA_Shift,fals,fals," ,1,0,0)。

突破。

}

如果(SL<OrderStopLoss())

SL = OrderStopLoss()。

}

如果(OrderType()==1) {

switch (TralType) {

case 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);

突破。

case 1: SL = Low[1] + iATR(NULL,0,ATR,Period,1)*ATR_K;

突破。

case 2: SL = iCustom(NULL,0, "VininI_HMAsound&amp",HMA_Period,HMA_Method,3,HMA_Shift,fals,fals," ,1,0,0)。

突破。

}

如果(SL>OrderStopLoss())

SL = OrderStopLoss()。

}

如果(SL!=OrderStopLoss()){

if(!OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0))

error = true。

}

}

}

}

if (!error)

LBT = Time[0]。

}

返回(0)。

}

//+------------------------------------------------------------------+

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
Выберите подходящую торговую стратегию и оформите подписку на нее в пару кликов. Все Сигналы сопровождаются подробной статистикой и графиками. Станьте Поставщиком торговых сигналов и продавайте подписку тысячам трейдеров по всему миру. Наш сервис позволит вам хорошо зарабатывать на прибыльной стратегии даже при небольшом стартовом капитале...
 
vkravtzov:

在专家顾问中加入了尾随止损功能,我将其编译后得到两个错误- 我百思不得其解,我想不出如何修复它们以获得猫头鹰。然而交易在价格分别触及通道的上限和下限后,根据旧的策略被关闭。我想这里也必须要改变一些东西。- 把它还给朝鲜民主主义人民共和国军队的人。


没有必要发送垃圾邮件。
 
Victor Nikolaev:
你不应该发送垃圾邮件。

如果我做错了什么,我向你道歉。我仍然不明白我是如何发送垃圾邮件的...我想我给两位同志发了两条信息。还是不允许这样做?- 我的错。