编码帮助 - 页 657

 

亲爱的朋友们。

这款软件在某些时候能在不同的货币对上工作吗?

例如:在某些时候,欧元兑美元+英镑兑美元等。

谢谢你...

附加的文件:
 
oguz:

亲爱的朋友们。

这个软件在某些时候对不同的货币对起作用吗?

例如:在某些时候,欧元兑美元+英镑兑美元等。

谢谢你...

把它附在不同的图表上,用不同的魔法数字,它应该可以工作。否则,从代码来看,你可能会有一个重大的混合。
 
mladen:
把它附在不同的图表上,用不同的魔法数字,它应该可以工作。否则,从代码来看,你可能会有一个重大的混杂。

非常感谢你提供的详细信息。

顺便问一下,我们能不能把任何数字作为神奇数字附在上面?

它的默认魔法号码是:"288"

我可以附上它吗?398, 477, 501, 875等等。?

 

亲爱的Mladen ,

我想知道我如何能在代码中添加相反的信号关闭?

extern bool oppositeSignalclose=true;


我已经试过了,但它在每个柱子上都关闭。


你能帮我看看我需要对 "OrderSended "进行哪些修改,在买入后关闭所有卖出/卖出后关闭所有买入。

谢谢你。

  // New buy orders
  TotalBuyOrders = CountOfOrders(MagicNumberBuy);
  if(TotalBuyOrders > 0 && TotalBuyOrders < MaxTrades)
  {
    OrderSended = -1;
    LastSellPrice = FindLastOrderParameter(MagicNumberBuy, "price");

    if(LastSellPrice - Ask >= GetPipstepForStep(TotalBuyOrders + 1) * vPoint)
    {
      BLot   = GetLotForStep(MagicNumberBuy, TotalBuyOrders);
      BComment = StringSubstr(LastOrderComment, 0, StringFind(LastOrderComment, "|", 0)) + "|";
      OrderSended = SendMarketOrder(OP_BUY, BLot, 0, 0, MagicNumberBuy, BComment);
    }
  }
  // New sell orders
  TotalSellOrders = CountOfOrders(MagicNumberSell);
  if(TotalSellOrders > 0 && TotalSellOrders < MaxTrades)
  {
    OrderSended = -1;
    LastBuyPrice = FindLastOrderParameter(MagicNumberSell, "price");

    if (Bid - LastBuyPrice >= GetPipstepForStep(TotalSellOrders + 1) * vPoint) 
    {
      SLot   = GetLotForStep(MagicNumberSell, TotalSellOrders);
      SComment = StringSubstr(LastOrderComment, 0, StringFind(LastOrderComment, "|", 0)) + "|";
      OrderSended = SendMarketOrder(OP_SELL, SLot, 0, 0, MagicNumberSell, SComment);
    }
  }
 
stevenpun:

亲爱的Mladen ,

我想知道我如何能在代码中添加相反的信号关闭?


我已经试过了,但它在每个柱子上都关闭。


你能帮我看看我需要对 "OrderSended "进行哪些修改,在买入后关闭所有卖出/卖出后关闭所有买入。

谢谢你。

如果相反的Signalclose设置为 "true",则反转对CountOfOrders的调用(即,像这样的:

if (oppositeSignalclose)
      TotalBuyOrders = CountOfOrders(MagicNumberBuy);
else  TotalBuyOrders = CountOfOrders(MagicNumberSell);
卖出订单 也要这样做
 
mladen:

如果相反的Signalclose被设置为 "true",则反转对CountOfOrders的调用(即,像这样的情况。

对卖出订单也要这样做

这是一个反向交易吗?

我希望当前的交易在相反的信号下关闭。

我在网上找到一个代码,但它是在每个柱子上关闭。

你能帮我检查一下,是我插入了正确的方式还是我想要的不同东西。

还有蜡烛追踪止损,我已经按照你上周教我的方法做了,但还是不能成功。

extern bool oppositeclose=true;
if((oppositeclose && sell))closebuy();
if((oppositeclose && buy))closesell();
//|---------close

void closebuy(){
   RefreshRates();
   if(OrdersTotal()>0){
      for(int i=OrdersTotal();i>=0;i--){
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_BUY){
            OrderClose(OrderTicket(),OrderLots(),Bid,slippage*mt);
         }
      }
   }
}

void closesell(){
   RefreshRates();
   if(OrdersTotal()>0){
      for(int i=OrdersTotal();i>=0;i--){
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_SELL){
            OrderClose(OrderTicket(),OrderLots(),Ask,slippage*mt);
         }
      }
   }
}
附加的文件:
BbandTest.mq4  37 kb
 
stevenpun:

这是个反向交易吗?

我希望当前的交易在相反的信号时关闭。

我在网上找到了一个代码,但它是在每个柱子上关闭的。

你能帮我检查一下,是我插入的方式正确还是我想要的东西不同。

还有蜡烛追踪止损,我已经按照你上周教我的方法做了,但还是不能成功。

在我看来,这应该是正确的。
 

请帮助我将指标导出 到.csv的代码
它只允许写一个指标......

如果要在OHLC之后导出多个数据列,应该如何纠正?

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

//|                                                  RSI_to_File.mq4 |

//|                      Copyright © 2007, MetaQuotes Software Corp. |

//|                                        [url]http://www.metaquotes.ru/[/url] |

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

#property copyright "Copyright © 2007, MetaQuotes Software Corp."

#property link      "http://www.metaquotes.ru/"


#property show_inputs

string SymbolsArray[13]={"","GBPUSD","EURUSD"};


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

//| string SymbolByNumber                                   |

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

string GetSymbolString(int Number)

  {

//----

   string res="";

   res=SymbolsArray[Number];   

//----

   return(res);

  }


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

//| возвращает период                                                |

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

int PeriodNumber(int number)

   {

   int per_min;

   switch (number)

      {

      default: per_min=PERIOD_M1;break;

      case 1: per_min=PERIOD_M5;break;

      case 2: per_min=PERIOD_M12;break;

      }

   return(per_min);   

   }


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

//|   выводит в файл котировки + значения индикатора                 |

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

void IFT_output(string SymbolName,int PeriodMinutes)

   {

   int size=iBars(SymbolName,PeriodMinutes);

//----

   if (size==0) return;

   int handle=FileOpen(SymbolName+PeriodMinutes+"_IFT.csv",FILE_WRITE|FILE_CSV);

   if (handle<0) return;

   FileWrite(handle,"Time seconds;Time;Open;Low;High;Close;Volume;IFT");

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

      {

      FileWrite(handle,iTime(SymbolName,PeriodMinutes,i),TimeToStr(iTime(SymbolName,PeriodMinutes,i))

         ,iOpen(SymbolName,PeriodMinutes,i),iLow(SymbolName,PeriodMinutes,i),iHigh(SymbolName,PeriodMinutes,i)

         ,iClose(SymbolName,PeriodMinutes,i),iVolume(SymbolName,PeriodMinutes,i),iCustom(SymbolName,PeriodMinutes,"IFT",0,i));

      }

   FileClose(handle);      

//----

   return;

   }

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

//| script program start function                                    |

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

int start()

  {

  int SymbolCounter,PeriodCounter; 

//----

   for (SymbolCounter=1;SymbolCounter<13;SymbolCounter++)

      {

      for (PeriodCounter=2;PeriodCounter<=6;PeriodCounter++)

         {

         //Print("NewBar on ",GetSymbolString(SymbolCounter),PeriodNumber(PeriodCounter),"M");

         IFT_output(GetSymbolString(SymbolCounter),PeriodNumber(PeriodCounter));

         }

      }

   

//----

   return(0);

  }

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

 
kostumer27:

请帮助我编写导出指标到.csv的代码。
它只允许写一个指标...

如果要在OHLC之后导出多个数据列,应该如何纠正?

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

//|                                                  RSI_to_File.mq4 |

//|                      Copyright © 2007, MetaQuotes Software Corp. |

//|                                        [url]http://www.metaquotes.ru/[/url] |

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

#property copyright "Copyright © 2007, MetaQuotes Software Corp."

#property link      "http://www.metaquotes.ru/"


#property show_inputs

string SymbolsArray[13]={"","GBPUSD","EURUSD"};


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

//| string SymbolByNumber                                   |

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

string GetSymbolString(int Number)

  {

//----

   string res="";

   res=SymbolsArray[Number];   

//----

   return(res);

  }


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

//| возвращает период                                                |

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

int PeriodNumber(int number)

   {

   int per_min;

   switch (number)

      {

      default: per_min=PERIOD_M1;break;

      case 1: per_min=PERIOD_M5;break;

      case 2: per_min=PERIOD_M12;break;

      }

   return(per_min);   

   }


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

//|   выводит в файл котировки + значения индикатора                 |

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

void IFT_output(string SymbolName,int PeriodMinutes)

   {

   int size=iBars(SymbolName,PeriodMinutes);

//----

   if (size==0) return;

   int handle=FileOpen(SymbolName+PeriodMinutes+"_IFT.csv",FILE_WRITE|FILE_CSV);

   if (handle<0) return;

   FileWrite(handle,"Time seconds;Time;Open;Low;High;Close;Volume;IFT");

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

      {

      FileWrite(handle,iTime(SymbolName,PeriodMinutes,i),TimeToStr(iTime(SymbolName,PeriodMinutes,i))

         ,iOpen(SymbolName,PeriodMinutes,i),iLow(SymbolName,PeriodMinutes,i),iHigh(SymbolName,PeriodMinutes,i)

         ,iClose(SymbolName,PeriodMinutes,i),iVolume(SymbolName,PeriodMinutes,i),iCustom(SymbolName,PeriodMinutes,"IFT",0,i));

      }

   FileClose(handle);      

//----

   return;

   }

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

//| script program start function                                    |

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

int start()

  {

  int SymbolCounter,PeriodCounter; 

//----

   for (SymbolCounter=1;SymbolCounter<13;SymbolCounter++)

      {

      for (PeriodCounter=2;PeriodCounter<=6;PeriodCounter++)

         {

         //Print("NewBar on ",GetSymbolString(SymbolCounter),PeriodNumber(PeriodCounter),"M");

         IFT_output(GetSymbolString(SymbolCounter),PeriodNumber(PeriodCounter));

         }

      }

   

//----

   return(0);

  }

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

只要在FileWrite()函数参数 中加入你想导出的数据即可。
 
mladen:
在我看来,这应该是正确的。

我已经解决了相反的关闭功能:>

但是当你有空的时候,你能不能帮助检查一下蜡烛的追踪止损,我还是不能解决这个问题:(