谁能帮助解决机器人的问题,为什么它不工作了? - 页 6

[删除]  
那么错在哪里,至少让我看看?
[删除]  

这是我对MT4 ECN、ND、STP的函数...

一年中没有一个错误

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

//|开单功能(BeerGod)|

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

//| 参数。|

//| sy - 仪器名称("" - 当前符号)|

//| op - 操作|

| //| ll - lot|

//| sl--停止水平 |

//| tp - 采取的水平 |

//| mn - 魔法数字 |

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


bool OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int MagicNumber=0)

{

double MinLl = MarketInfo(Symbol(),MODE_MINLOT);

double MaxLl = MarketInfo(Symbol(),MODE_MAXLOT);

ll = NormalizeDouble(ll,2);

如果(ll<MinLl)ll=MinLl;否则ll=ll。

如果(ll>MaxLl)ll=MaxLl;否则ll=ll。

if (op == 0) // BUY opening

{

// 检查是否有免费的资金

如果((AccountFreeMarginCheck(sy,OP_BUY,ll)<=0) || (GetLastError()==134))

{

Print(sy," ",ll," It is impossible to open order Buy,not enough money." )。

return(0);

}

RefreshRates()。


// 打开订单

int ticketbuy = OrderSend(sy,OP_BUY,ll,MarketInfo(sy,MODE_ASK),Slippage,0,0,Comment,MagicNumber,0,BuyColor)。

如果(ticketbuy<0)

Print(sy," OpenPosition.OrderSend Buy fail #",GetLastError())。

否则

Print(sy," OpenPosition. OrderSend Buy successfully");


// 睡眠(暂停)。


// 修改订单(设置止盈和止损)。

如果(sl !=0 || tp !=0)

{

//------计算的SL和TP价格必须被规范化

double BSLoss = NormalizeDouble(MarketInfo(sy,MODE_ASK)-sl*MarketInfo(sy,MODE_POINT), (int)MarketInfo(sy,MODE_DIGITS)

double BTProfit = NormalizeDouble(MarketInfo(sy,MODE_ASK)+tp*MarketInfo(sy,MODE_POINT), (int)MarketInfo(sy,MODE_DIGITS))。

//---- 如果输入值为零,则将修改后的价格替换为零

如果(sl == 0)BSLoss = 0。

如果(tp == 0)BTProfit = 0。


bool resbuy = OrderModify (ticketbuy,OrderOpenPrice(),BSLoss,BTProfit,0,StopColor)。

if(!resbuy)

Print(sy," OpenPosition.OrderModify购买失败#",GetLastError())。

否则

Print(sy," OpenPosition. OrderModify Buy successfully");

}

}


if (op == 1) // 打开卖出。

{

// 检查是否有免费资金

如果((AccountFreeMarginCheck(sy,OP_SELL,ll)<=0) ||(GetLastError()==134))

{

Print(sy," ",ll," It is impossible to open order Sell, not enough money." )。

return(0);

}

RefreshRates()。


// 打开订单

int ticketsell = OrderSend(sy,OP_SELL,ll,MarketInfo(sy,MODE_BID),Slippage,0,0,Comment,MagicNumber,0,SellColor);

如果(Ticketsell<0)

Print(sy," OpenPosition.OrderSend Sell失败#",GetLastError())。

否则

Print(sy," OpenPosition. OrderSend Sell successfully");


// 睡眠(暂停)。


// 修改订单(设置止盈和止损)。

如果(sl !=0 || tp !=0)

{

//----计算出的SL和TP价格必须被规范化

double SSLoss = NormalizeDouble(MarketInfo(sy,MODE_BID)+sl*MarketInfo(sy,MODE_POINT), (int)MarketInfo(sy,MODE_DIGITS)

double STProfit = NormalizeDouble(MarketInfo(sy,MODE_BID)-tp*MarketInfo(sy,MODE_POINT), (int)MarketInfo(sy,MODE_DIGITS))。

//---- 如果输入值为零,则将修改后的价格替换为零

如果(sl == 0)SSLoss = 0。

如果(tp == 0)STProfit = 0。


bool ressell = OrderModify (tasksell,OrderOpenPrice(),SSLoss,STProfit,0,StopColor)。

if(!ressell)

Print(sy," OpenPosition.OrderModify Sell失败#",GetLastError())。

否则

Print(sy," OpenPosition. OrderModify Sell successfully");

}

}

return(True)。

}

//结束

[删除]  
P.S. 主持人,代码不能通过按钮插入。
 
Vladimir Zubov:
P.S. 版主,代码不能通过按钮插入。

我正在提供免费(不收费)的在线Skype课程,讲授代码插入:)

 if (sl == 0) SSLoss = 0;
[删除]  
Karputov Vladimir:

我在Skype上提供免费的(不收费的)关于代码插入 的在线课程 :)

//+----------------------------------------------------------------------------+
//|    Функция открытия ордера  (BeerGod)                                      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" - текущий символ)                   |
//|    op - операция                                                           |
//|    ll - лот                                                                |
//|    sl - уровень стоп                                                       |
//|    tp - уровень тейк                                                       |
//|    mn - MagicNumber                                                        |
//+----------------------------------------------------------------------------+

bool OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int MagicNumber=0)
{
   double MinLl = MarketInfo(Symbol(),MODE_MINLOT);
   double MaxLl = MarketInfo(Symbol(),MODE_MAXLOT);
   ll = NormalizeDouble(ll,2);
   if (ll < MinLl) ll = MinLl; else ll = ll;
   if (ll > MaxLl) ll = MaxLl; else ll = ll;
   
   if (op == 0) // Открытие BUY
   {
      // Проверяем доступность свободных средств
      if((AccountFreeMarginCheck(sy,OP_BUY,ll)<=0) || (GetLastError()==134))
            {
               Print(sy," ",ll," It is impossible to open the order Buy, not enough money.");
               return(0);
            }
      RefreshRates();

      // Открываем ордер
      int ticketbuy = OrderSend(sy,OP_BUY,ll,MarketInfo(sy,MODE_ASK),Slippage,0,0,Comments,MagicNumber,0,BuyColor);
         if(ticketbuy<0)
         Print(sy," OpenPosition. OrderSend Buy fail #",GetLastError());
         else
         Print(sy," OpenPosition. OrderSend Buy successfully");

      // Sleep (Pause);

      // Модифицируем ордер (выставляем тейкпрофит и стоплосс)
      if (sl !=0 || tp !=0)
            {
            //--- Вычисленные значения цен SL и TP должны быть нормализованы
            double BSLoss = NormalizeDouble(MarketInfo(sy,MODE_ASK)-sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
            double BTProfit = NormalizeDouble(MarketInfo(sy,MODE_ASK)+tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
            //--- Если входящие значения ноль то заменяем цену модификации на ноль
            if (sl == 0) BSLoss = 0;
            if (tp == 0) BTProfit = 0;

            bool resbuy = OrderModify (ticketbuy,OrderOpenPrice(),BSLoss,BTProfit,0,StopColor);
                  if(!resbuy)
                     Print(sy," OpenPosition. OrderModify Buy fail #",GetLastError());
                  else
                     Print(sy," OpenPosition. OrderModify Buy successfully");
            }
   }

   if (op == 1) // Открытие Sell
   {
      // Проверяем доступность свободных средств
      if((AccountFreeMarginCheck(sy,OP_SELL,ll)<=0) || (GetLastError()==134))
            {
               Print(sy," ",ll," It is impossible to open the order Sell, not enough money.");
               return(0);
            }
      RefreshRates();

      // Открываем ордер
      int ticketsell = OrderSend(sy,OP_SELL,ll,MarketInfo(sy,MODE_BID),Slippage,0,0,Comments,MagicNumber,0,SellColor);
         if(ticketsell<0)
         Print(sy," OpenPosition. OrderSend Sell fail #",GetLastError());
         else
         Print(sy," OpenPosition. OrderSend Sell successfully");

      // Sleep (Pause);

      // Модифицируем ордер (выставляем тейкпрофит и стоплосс)
      if (sl !=0 || tp !=0)
            {
            //--- Вычисленные значения цен SL и TP должны быть нормализованы
            double SSLoss = NormalizeDouble(MarketInfo(sy,MODE_BID)+sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
            double STProfit = NormalizeDouble(MarketInfo(sy,MODE_BID)-tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
            //--- Если входящие значения ноль то заменяем цену модификации на ноль
            if (sl == 0) SSLoss = 0;
            if (tp == 0) STProfit = 0;

            bool ressell = OrderModify (ticketsell,OrderOpenPrice(),SSLoss,STProfit,0,StopColor);
                  if(!ressell)
                     Print(sy," OpenPosition. OrderModify Sell fail #",GetLastError());
                  else
                     Print(sy," OpenPosition. OrderModify Sell successfully");
            }
   }
return (True);
}
//End
[删除]  
Karputov Vladimir:

我在Skype上提供免费的(不收费的)关于代码插入 的在线课程 :)

如果我只是粘贴代码,是的,但如果我写更多,代码就消失了
[删除]  
有一个错误的地方,当计算PHP和MQL时,如果你需要汇编,那么请帮助。
 
GIM:
谢谢你!

完成了,如果你有任何关于代码编写的问题,也可以当面或通过Skype进行咨询

附加的文件:
GIM.mq4  9 kb
 
Sergey Gritsay:

准备好了,如果你有任何关于代码的问题,请发电子邮件或Skype

警报》发出的信息是:没有价格。等待新的蜱虫...
 
GIM:
警报》发出的消息是:没有价格。我们等待着新的蜱虫...

我有一个模拟账户,运行良好,第一次就开了一笔交易。我需要更多细节。