任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 756

 
ssn1:
我习惯于自己的归档系统。
我已经用Keeper安全地度过了:我的PC上的硬盘被毁,我的笔记本电脑出现故障。而且我没有丢失任何一个字节的代码。金库很方便。
 

下午好。

我写了一个锻炼计划。由于某些原因,它没有发挥作用。

我在9月29日至10月15日期间在策略测试器中对其进行了测试。

这个程序应该是这样的:我进行了一次购买。当价格跌至0.010时,它应该亏损卖出。

发生买入。没有销售。我开始目测,发现价格不仅仅是低了0.010,而是高了很多。很奇怪。

// -------- 变量 --- 开始-----
外置双倍数L1=0.01; //买入时的手数
外置双倍数L1n=0.01; // 买入时的手数(归一化手数)。
外置双倍AktualAsk=0.0; // 当前的Bid价格
外部双倍AktualBid=0.0; // 实际销售价格
extern int int ticketlackmus=1; // 成功开单的指标。
extern int int ticket1=0; // ticket
外部bool PozOtk1=true。
// -------- 变量 --- 结束 -----
int init()
{
return(0);
}


int start()
{
如果(PozOtk1==true)
{
//打开位置
ticketlackmus=1。
while (ticketlackmus>0)
{
警告("打开第一个位置")。
RefreshRates()。// 刷新数据
AktualAsk=NormalizeDouble(Ask,Digits); //为价格。
L1n=NormalizeDouble(L1,2); //为地段。
ticket1=OrderSend("GBPUSD", OP_BUY, L1n, AktualAsk, 5, 0, 0, 0, 0,CLR_NONE)。
如果(ticket1>0)ticketlackmus=-1。
{
提醒(" ORDER OPEN ", ticket1, ", ticketlackmus)。
}
}
PozOtk1=false。
警告("PozOtk1", PozOtk1)。
}

RefreshRates()。// RefreshRates()
AktualBid=NormalizeDouble(Bid,Digits); //为价格。
如果(AktualBid<=AktualAsk-0.010 && PozOtk1==false)
{
RefreshRates(); // 刷新数据
OrderSelect(ticket1, SELECT_BY_TICKET;)
L1n=NormalizeDouble(L1,2); //为地段。
OrderClose(ticket1, L1n, AktualBid, 5)。
PozOtk1=true。
}

return(0);
}

int deinit()
{
return(0);
}


奥泽罗。

 

在插入代码时,请使用神奇的SRC 按钮。

在论坛中正确插入代码

 
// -------- переменные --- Н -----
extern double L1=0.01;            // размер лота для покупки 
extern double L1n=0.01;           // размер лота для покупки 
extern double AktualAsk=0.0;
extern double AktualBid=0.0;
extern int ticketlackmus=1;       // "лакмусовая бумажка" успешности откарытия ордера
extern int ticket1=0;             // тикет 
extern bool PozOtk1=true;
// -------- переменные --- К ----- 
int init() 
   {
      return(0);
   }


int start()    
   {
      if (PozOtk1==true) 
         {     
// Открытие позиции
             ticketlackmus=1;
             while (ticketlackmus>0)
                {
     Alert (" Открытие первой позиции ");
                   RefreshRates();                                        // Обновление данных 
                   AktualAsk=NormalizeDouble(Ask,Digits); //для цены
                   L1n=NormalizeDouble(L1,2); //для лота.
                   ticket1=OrderSend ("GBPUSD", OP_BUY, L1n, AktualAsk, 5, 0, 0, 0, 0, CLR_NONE);    
                   if (ticket1>0) ticketlackmus=-1;
                   {
                   Alert (" ОРДЕР ОТКРЫТ ", ticket1, "  ", ticketlackmus);
                   }
                }
             PozOtk1=false; 
             Alert (" PozOtk1 ", PozOtk1);
          }

      RefreshRates();                                        // Обновление данных 
      AktualBid=NormalizeDouble(Bid,Digits); //для цены
           if (AktualBid<=AktualAsk-0.010 && PozOtk1==false)
       {                              
                     RefreshRates();    // Обновление данных 
                     OrderSelect(ticket1, SELECT_BY_TICKET);   
                     L1n=NormalizeDouble(L1,2); //для лота
                     OrderClose (ticket1, L1n, AktualBid, 5);
                     PozOtk1=true; 
       }

return(0);
   }



int deinit()                                   
   {
      return(0);
   } 

 

如果在某个符号(本例中为"GBPUSD") 上建仓,那么建议通过marketinfo获取该符号的所有数据,即不仅仅是 AktualAsk=NormalizeDouble(Ask,Digits);aktualAsk=MarketInfo( "GBPUSD",MODE_ASK) 。

因此应采取任何市场数据,以避免。

 
// -------- переменные --- Н -----
extern double L1=0.01;            // размер лота для покупки 
extern double L1n=0.01;           // размер лота для покупки 
extern double AktualAsk=0.0;
extern double AktualBid=0.0;
extern int ticketlackmus=1;       // "лакмусовая бумажка" успешности откарытия ордера
extern int ticket1=0;             // тикет 
extern bool PozOtk1=true;
// -------- переменные --- К ----- 
int init() 
   {
      return(0);
   }


int start()    
   {
      if (PozOtk1==true) 
         {     
// Открытие позиции
             ticketlackmus=1;
             while (ticketlackmus>0)
                {
     Alert (" Открытие первой позиции ");
                   RefreshRates();                                        // Обновление данных 
                   //AktualAsk=NormalizeDouble(Ask,Digits); //для цены
                   AktualAsk=MarketInfo( "GBPUSD",MODE_ASK);
                   L1n=NormalizeDouble(L1,2); //для лота.
                   ticket1=OrderSend ("GBPUSD", OP_BUY, L1n, AktualAsk, 5, 0, 0, 0, 0, CLR_NONE);    
                   if (ticket1>0) ticketlackmus=-1;
                   {
                   Alert (" ОРДЕР ОТКРЫТ ", ticket1, "  ", ticketlackmus);
                   }
                }
             PozOtk1=false; 
             Alert (" PozOtk1 ", PozOtk1);
          }

      RefreshRates();                                        // Обновление данных 
      AktualBid=NormalizeDouble(Bid,Digits); //для цены
           if (AktualBid>=AktualAsk+0.010 && PozOtk1==false)
       {                              
                     RefreshRates();    // Обновление данных 
                     OrderSelect(ticket1, SELECT_BY_TICKET);   
                     L1n=NormalizeDouble(L1,2); //для лота
                     OrderClose (ticket1, L1n, AktualBid, 5);
                     PozOtk1=true; 
       }

return(0);
   }



int deinit()                                   
   {
      return(0);
   } 
evillive:

如果在一个特定的符号(本例中为"GBPUSD") 上开仓,那么建议通过marketinfo获取该符号的所有数据,即不仅仅是 AktualAsk=NormalizeDouble(Ask,Digits); aktualAsk=MarketInfo( "GBPUSD",MODE_ASK) 。

因此,任何市场数据都应采取,以避免。

谢谢,Evillive!

我已经做了修改。但我已经开始购买了。变化后没有销售。M15测试从2014年9月30日到10月中旬。



 
Ozero:

谢谢,Evillive!

做出了改变。但是,无论如何,购买工作还是要进行的。变化之后,没有发生销售。M15测试从2014年9月30日到10月中旬。



找到上述代码中可能有销售的地方
 
OrderClose (ticket1, L1n, AktualBid, 5);
 
Ozero:
这是命令的结束。卖出订单 的开盘是在哪里。它不在上述代码中
 
我的意思是订单没有关闭 :( 如果我没有这样说,对不起,我是个新手。