我将免费撰写一份顾问报告 - 页 41

 
Anton Kedo:
这个话题似乎已经被放弃了。
不,为什么......他们有时会读,只是像 "我有一个很酷的想法,就像一个圣杯"这样的请求很少被采纳。特别是在没有ToR的情况下。
 
下午好。我有一个有趣的想法,如何改进ilean(马汀格尔)以防止暴跌。在这里描述其本质是非常长的,谁将尝试在Skype中解释其本质的想法。
 
Evgeniu Semenuta:
下午好。我有一个有趣的想法,就是如何修改illan(martingale)以防止暴跌。这里有一个很长的描述,谁将尝试在Skype中解释思想的本质。
阅读上一篇文章!
 

好的。让我试着描述一下。假设价格下降,而伊利安已经开始购买了。自然,他加仓买入增加手数,以此类推,直到价格回滚或押金卖完为止。我想尝试以下变体:当价格达到10膝时,猫头鹰立即在15点下2个挂单(之前下单的总LOS除以2)。

1个订单只在前10个膝盖的利润水平上设置止损。

2)在前10个弯道的利润水平上的止损单,利润15

然后我们有两种可能的结果:价格设置止损,回来,关闭10个弯曲的网格,我们就出了两个损失的订单。或者市场持续下跌,第2个订单在利润上关闭,从10个弯曲的净值中再放一个或两个负的订单,大约10个点后关闭一个或两个负的。第二个挂单将止损拉到Breakeven,并等待到最后。

不知何故。这很难用语言来解释(。如果你有兴趣,我将在Skype上详细解释这个想法。

 
Evgeniu Semenuta:

好的。让我试着描述一下。假设价格下降,而伊利安已经开始购买了。自然,他加仓买入增加手数,以此类推,直到价格回滚或押金卖完为止。我想尝试以下变体:当价格达到10膝时,猫头鹰立即在15点下2个挂单(之前下单的总LOS除以2)。

1个订单只在前10个膝盖的利润水平上设置止损。

2)在前10个弯道的利润水平上的止损单,利润15

然后我们有两种可能的结果:价格设置止损,回来,关闭10个弯曲的网格,我们就出了两个损失的订单。或者市场持续下跌,第2个订单在利润上关闭,从10个弯曲的净值中再放一个或两个负的订单,大约10个点后关闭一个或两个负的。第二个挂单将止损拉到Breakeven,并等待到最后。

不知何故。这很难用语言来解释(。如果你有兴趣,我将在Skype上详细解释这个想法。

通常的想法,导致了不可避免的梅花!细节不再有意义!
 

下午好,在这个问题上,是否考虑了重做原始EA的选项?如果是这样,下面是描述:

我有一个需要改进的EA(当交易被允许且两个参数未被满足时,它不会自行关闭交易:关闭区域的指示和部分关闭量的指示))ToR描述。

时间范围:任何


使用的符号。

布林带:周期20

异常值2

适用于关闭



ADX:第14期

适用于关闭

设定水平为25



买入信号:在平盘期间(当ADX水平低于25),等待价格收在布林带底部(参数o定义了订单的开放点,从布林带 中间到布林带 底部的距离定义为100%,0%在布林带底部,10%更高,等等),然后等待确认蜡烛收盘时价格上涨。我们开放购买。订单的关闭取决于EA中的选项,选项参数将在后面解释。当订单触及布林带中段时,将以参数n关闭(参数n以百分比设置,定义了哪一部分的交易量被关闭,在手数中该值被四舍五入,0%意味着没有被关闭)。止损设置在订单的开盘价,然后用参数f完全关闭订单(布林带中轨到上轨的距离为100%,参数f定义为百分比,定义了价格达到时订单将被关闭的点,0%是布林带上轨的点,10%更低,等等)。)/

卖出订单:在平盘期间(当ADX低于25时),等待价格收于布林带上轨(o指定订单的进入点,布林带平均值到上轨的距离为100%,0%在布林带上轨,10%在下轨等),然后等待确认蜡烛收盘后向低价移动。我们开始销售。止损在设置中以点为单位。订单的关闭取决于您EA中的选项,选项参数将在后面解释。(参数n是以百分数设置的,它定义了哪一部分的交易量被关闭,在手数中这个值被四舍五入,这意味着没有被关闭).止损被设置在开盘价,然后订单被参数f完全关闭。(从布林带中轨到布林带下轨的距离被认为是100%,定义为百分比的f参数定义了价格达到时订单将被关闭的点,0%点在布林带下轨,10%更高,等等)



选项 :

止损可以在专家顾问选项中设置,也可以完全不设置。有两种类型的止损:以点为单位的常规止损和以预期利润为单位的止损,即当订单从订单价格到相反的布林线(上限或下限)的距离被计算。在期权中,系数S(从0到1)被设定,它被乘以潜在利润。这个值就是止损,即如果系数是0.5,那么止损将等于潜在利润的一半。)

写这个EA的程序员主要是对写任何基于布林线的顾问感兴趣,不打算进一步修改在附件中,我看到历史上策略的统计数据,顾问是基于此的,以及顾问在VPS上运行半周的一些属性(有三个不同管理的术语在运行)。以下是代码。

#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//--- input parameters
input int      BBPeriod=20;
input double   BBdeviation=2.0;
input int      ADX=14;
input double   AdxLevel=25;
input double      SL=2000;
input double      TP=0;
input int      Obuy=5;
input int      Osell=5;
input double   Lot=0.1;
input bool     CloseMiddle=true;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
bool buyOpen=false;
bool sellOpen=false;
double _Obuy;
double _OSell;
int TryShots= 3;
int Slippage=50;                         // Slippage
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   _Obuy=Obuy/100;
   _OSell=Osell/100;

   if(!IsTradeAllowed())
     {
      string message="You must allow trading!";
      Print(message);
      Comment(message);
      return INIT_FAILED;
     }

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   static datetime prevTime;
   datetime currentTime=iTime(Symbol(),0,0);
   if(prevTime==currentTime)
     {
      return;
     }
   else
     {
      prevTime=currentTime;
     }

   double adx=iADX(NULL,0,ADX,PRICE_CLOSE,0,2);

   if(adx<AdxLevel)
     {
      double bbMain1=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,0,2);
      double close=iClose(NULL,0,2);
      if(!buyOpen)
        {
         double bbDown1=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,2,2);
         BuyPosition(bbDown1,bbMain1,close);
        }
      else
        {
         double currentClose=iClose(NULL,0,0);
         double currentBB=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,0,0);
         if(CloseMiddle && currentClose>currentBB)
           {
            CloseOpenPos(OP_BUY);
            buyOpen=false;
           }
        }

      if(!sellOpen)
        {
         double bbUp1=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,1,2);
         SellPosition(bbUp1,bbMain1,close);
        }
      else
        {
         double currentClose=iClose(NULL,0,0);
         double currentBB=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,0,0);
         if(CloseMiddle && currentClose<currentBB)
           {
            CloseOpenPos(OP_SELL);
            sellOpen=false;
           }
        }
     }

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

void BuyPosition(double bbDown,double bbMain,double close)
  {
   double dif=bbMain-bbDown;
   double proc=dif *_Obuy;
   double DownProc=bbDown+proc;

   if(close<DownProc)
     {
      double openCurrent=iOpen(NULL,0,1);
      double closeCurrent=iClose(NULL,0,1);
      if(closeCurrent>openCurrent)
        {

         for(int it=0; it<TryShots; it++)
           {
            ResetLastError();
            RefreshRates();
            double sl,tp;
            if(SL!=0)
               sl=NormalizeDouble(Bid-SL*Point,Digits);
            if(TP!=0)
               tp=NormalizeDouble(Bid+TP*Point,Digits);
            Print(Ask+" sl"+sl+" tp"+tp);
            if(!OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),Slippage,sl,tp))
              {
               if(it>=TryShots) { Print("Failed OP_BUY !"); break; }
               int err=GetLastError();
               if(err==4 || err==6 || err==8 || err==128 || err==137 || err==141 || err==146) Sleep(1000*it);
               else { Print("Failed OP_BUY !"); break; }
              }
            else
              {
               buyOpen=true;
               break;
              }

           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SellPosition(double bbUp,double bbMain,double close)
  {
   double dif=bbUp-bbMain;
   double proc=dif*_OSell;
   double UpProc=bbUp-proc;

   if(close>UpProc)
     {
      double openCurrent=iOpen(NULL,0,1);
      double closeCurrent=iClose(NULL,0,1);
      if(closeCurrent<openCurrent)
        {
         for(int it=0; it<TryShots; it++)
           {
            ResetLastError();
            RefreshRates();
            double sl,tp;
            if(SL!=0)
               sl=NormalizeDouble(Ask+SL*Point,Digits);
            if(TP!=0)
               tp=NormalizeDouble(Ask-TP*Point,Digits);
            Print(Bid+" sl"+sl+" tp"+tp);
            if(!OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),Slippage,sl,tp))
              {
               if(it>=TryShots) { Print("Failed OP_SELL !"); break; }
               int err=GetLastError();
               if(err==4 || err==6 || err==8 || err==128 || err==137 || err==141 || err==146) Sleep(1000*it);
               else { Print("Failed OP_SELL !"); break; }
              }
            else
              {
               sellOpen=true;
               break;
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Close open position                                              |
//+------------------------------------------------------------------+
void CloseOpenPos(int or_tp)
  {
   int i,err,k=OrdersTotal();
//---
   for(i=k-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            if(or_tp==OrderType())
              {
               for(int it=0; it<TryShots; it++)
                 {
                  ResetLastError();
                  RefreshRates();
                  double _price=Ask; if(or_tp==OP_BUY) _price=Bid;
                  //---
                  if(!OrderClose(OrderTicket(),OrderLots(),_price,Slippage))
                    {
                     if(it>=TryShots) { Print("Failed to close the order ",OrderTicket(),"!"); break; }
                     err=GetLastError();
                     if(err==4 || err==6 || err==8 || err==128 || err==137 || err==141 || err==146) Sleep(1000*100);
                     else { Print("Failed to close the order ",OrderTicket(),"!"); break; }
                    }
                  else break;

                 }
              }
           }
        }
     }
  }

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

我从终端添加了更多的截图,在VPS上运行:截图 "1 "和 "2 "是顾问不自己打开交易时的例子

截图 "锁定",专家顾问没有自行关闭买入头寸,而是由于出现的卖出条件而打开了卖出头寸。
屏幕截图 "订单收到",在这种情况下,订单被正确打开。
附加的文件:
Pictures.zip  775 kb
a2ji9v3g8.zip  14 kb
Statement.zip  23 kb
 

谁有在总利润上关闭所有订单的脚本 - 请发给我们。

我将不胜感激。

 

我是一个很好的人,我的工作是把我的工作做得很好,我的工作是把我的工作做得很好,我的工作是把我的工作做得很好,我的工作是把我的工作做得很好,我的工作是把我的工作做得很好,我的工作是把我的工作做得很好。

事实上,如果我明白它用什么变量在屏幕上显示 "眼睛"、蓝色和红色标记,我甚至可以尝试自己写一个!

 
baikot:

我是一个很好的人,我的工作是把我的工作做得很好,我的工作是把我的工作做得很好,我的工作是把我的工作做得很好,我的工作是把我的工作做得很好,我的工作是把我的工作做得很好,我的工作是把我的工作做得很好。

事实上,如果我明白它用什么变量在屏幕上显示 "眼睛"、蓝色和红色标记,我甚至可以尝试自己写一个!

指标本身在哪里?
 
Victor Nikolaev:
指标本身在哪里?
不过,你不需要这样做。你只有找到反编译,才能进入澡堂。