[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 165

 
FelixFX:

谢谢

在编译过程中发现了很多错误
 
RoniIron:

请原谅我......,马丁格尔顾问,是否可以在其中规定止损,还是不可以。谢谢你。

OrderSend()函数 将止损作为其参数之一。而正是它规定了秩序。因此,我们计算出我们需要的订单的止损水平,并将其输入函数中。
 
FelixFX:

汇编中发现了很多错误

好吧,那就这样吧--我已经警告过你,我的子程序涉及到了!用GetLastError()删除它们,并用你的打印机取代它们。
 
drknn:

嗯,会的--我告诉过你,我的子程序也参与其中。移除它们,用你的打印机与GetLastError()查询替换它们。

这很容易做到,如果你精通mql的话。)我只是在学习,所以对我来说,删除所有不必要的东西,只留下必要的东西是有点困难的。
 
// =================================================================================================
// ************************* Трейлинг рыночных ордеров *********************************************
// =================================================================================================


// =================  TrailingRyn() =============================================================
// функция осуществляет трейлинг рыночных ордеров 
// ----------------------------------------------
void TrailingRyn_b(int ryn_TrStop, int ryn_TrStep, int Proskalz, int MAGIC, bool WaitProfit,  bool UseTrailingSound) {
  string SMB=Symbol(); 
  int i;
  int MinLevel=MarketInfo(SMB,MODE_STOPLEVEL);//Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах   
  int SchBuy=SchBuy(MAGIC);
  int SchSell=SchSell(MAGIC);
  if(ryn_TrStop>=MinLevel && ryn_TrStep>0 && (SchBuy>0 || SchSell>0)){    
    for (i=OrdersTotal()-1;i>=0;i--){
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {Print("Ошибка № ",GetLastError()," при выборе ордер № ",i);}
      else {
        if (OrderSymbol()==SMB && OrderMagicNumber()==MAGIC){
          TrailingPositions_b(ryn_TrStop,ryn_TrStep,Proskalz,WaitProfit,UseTrailingSound);
        }
      }
    }
  }
 if(ryn_TrStop>=MinLevel && ryn_TrStep==0)
 Print("Трейлинг невозможен - ryn_TrStep==0");
} 
// =================================================================================================

//+------------------------------------------------------------------+
//| Сопровождение позиции простым тралом                             |
//+------------------------------------------------------------------+
void TrailingPositions_b(int ryn_TrStop, int ryn_TrStep, int Proskalz, bool WaitProfit, bool UseTrailingSound){
  if(OrderType()==OP_BUY){
    if(!WaitProfit || (Bid-OrderOpenPrice())>ryn_TrStop*Point){
      if (OrderStopLoss()<Bid-(ryn_TrStop+ryn_TrStep-1)*Point){
        ModifyStopLoss_b(Bid-ryn_TrStop*Point,UseTrailingSound);
      }
    }
  }
  if(OrderType()==OP_SELL){
    if(!WaitProfit || OrderOpenPrice()-Ask>ryn_TrStop*Point) {
      if(OrderStopLoss()>Ask+(ryn_TrStop+ryn_TrStep-1)*Point || OrderStopLoss()==0){
        ModifyStopLoss_b(Ask+ryn_TrStop*Point,UseTrailingSound);
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Перенос уровня StopLoss                                          |
//| Параметры:                                                       |
//|   ldStopLoss - уровень StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss_b(double ldStopLoss, bool UseTrailingSound){
  bool fm=false;
  string NameTrallingSound  = "ok.wav";// Наименование звукового файла для трейлинга
  fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
  if(fm!=0 && fm!=-1){
    if(UseTrailingSound) { PlaySound(NameTrallingSound);}
  }   
  if(fm==0 || fm==-1) { Print("Ошибка № ",GetLastError()," при модификации ордера № ",OrderTicket());}
}
//+------------------------------------------------------------------+
 
VOLDEMAR:
谢谢大家.....
iCustom和一个在某个点上画箭头的指标如何能告诉我的EA打开.....
如果iBands是一个Ask > BBUP,那是可以理解的,但可能出现也可能不出现的对象呢(如箭头)??????。


同样,你需要看一下指标的代码,以了解哪个缓冲区包含哪一行的值。

如果你想在iCustom函数中输入指标参数,那么指标参数应该被添加到专家顾问的自定义变量中。否则,EA将无法理解列出的变量是什么值。

 
你好!如果我问错了问题,请不要踢我,但我在论坛和互联网上挖了一圈,没有找到我想要的东西。问题是这样的!是否可以在if中创建一个条件(在最后的StopLoss(时间)之后应该关闭,例如2个利润),直到他们不做其他的...如果有可能的话,可以用代码画一个小草图,但也可以简单地用文字画一个方案--事先谢谢你!
 
ruzzo:
你好!如果我问错了问题,请不要踢我,但我挖遍了整个论坛和互联网,都没有找到我想找的东西。问题是这样的!是否可以在if中创建一个条件(在最后的StopLoss(时间)之后应该关闭,例如2个利润),直到他们不做其他的...如果可能的话,用代码画个小草图,但也可以直接用文字画个方案,提前谢谢你了


一般来说,嗯,不清楚你到底需要什么。

可以在if()中插入一个条件。它可以在任何事件发生后插入。但关闭两个利润是什么意思?还有其他可以做的。这就是全部。


if(условие){

// какой-то код 

}

else{

// какой-то код 

} 
 
drknn:


实际上,我不明白你到底需要什么。

可以在if()中插入一个条件。它可以在任何事件发生后插入。但关闭两个利润是什么意思?还有其他可以做的。重点是...


我明白,首先是条件,然后是代码,但我想创建一个条件,我得到了StopLoss和工作与另一个手,例如 - 直到我关闭交易的两个利润 - 我只是不想比较余额在如果 - 所有因为如果我比较余额,我有一个挂单与时间限制 - 改变的手跳过 - 因为订单到期与增加的手 - 我可以挖错?
 

请帮助我理解。

我决定使用MACD样本,但我不明白哪里出了问题--无论什么版本,甚至终端中的原生版本。

都会产生错误。

2011.02.28 23:01:53 MACD sample EURUSD,M15: 开启BUY订单 时出错 : 130

5位数的账户。1:500,手数0.1或1,没有区别,真实账户。

我已经把SL和TP增加了10倍,没有任何变化,我甚至改变了更多,没有结果,我不能让它在那里打开东西((

事实上,它的工作原理很清楚,如果我用手打开一个交易,那么它就会把它转移到无损的位置并开始拖动,但并不想自己打开它!这就是它的工作原理。

我做错了什么,我一个星期都不明白!?