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

 
artmedia70:
有了这样的问题,你应该去610号 构建主题--开发人员在那里。


谢谢你,走了。
 
Zolotai:

是的,但是,你知道。我必须翻阅别人的代码。这一点我不明白,而且要花很多时间要搞清楚。

从教程开始,然后是文档,等等。没有其他办法了!而且,你将能够理解其他人的代码,并从他们那里学到很多东西!暗示不是教化,而是败坏!
 

关于可视化的问题。

我用这样的命令创建一个挂单

OrderSend(Symbol(), OP_BUYLIMIT, lot, price, 3, 0, take_profit, 999, 999, 0, Blue) 。

在测试器中,我们可以看到其所有路径为箭头:挂单------>买入-------------->获利出售

然而,下单时 只出现蓝色箭头,我们只能猜测日志中的买入和获利。是否有办法在真实的图表中看到与测试器中相同的箭头?

 
Denis111:

关于可视化的问题。

我通过以下类型的命令创建一个挂单

OrderSend(Symbol(), OP_BUYLIMIT, lot, price, 3, 0, take_profit, 999, 999, 0, Blue) 。

在测试器中,箭头显示了它的所有路径:挂单------>买入-------------->卖出获利。

在现实生活中,只有在下单时才会出现蓝色箭头,我们只能在日志中猜测买入和获利的情况。有没有办法在真实图表中看到与策略测试器中相同的箭头?


要做到这一点,在没有TP的情况下打开,然后在修改时也指定一个颜色,你就会有一个封闭的三角形,并有一条来自开口本身的虚线!
 

你好,我写了一个简单的脚本来打开待定 买单。该脚本在模拟账户上成功运行,但在真实账户上会产生错误:133,这意味着不允许交易。你能告诉我问题出在哪里吗?这个错误的原因可能是什么?


Extern int orderSize = 50;
extern int SL = 20;
extern int TP = 20;

int start()
{
double correctPoint = 0.0001;
double priceOpen = iOpen( Symbol(), PERIOD_M5, 0 ); //在priceOpen变量中写入当前5分钟的开盘价

double priceBuy = priceOpen + (double)orderSize * correctPoint; //挂单的价格
double priceTP = priceBuy + (double)TP * correctPoint;
double priceSL = priceBuy-(double)SL * correctPoint;

while( !IsTradeAllowed() )
Sleep( 100 );
int codeError = OrderSend( Symbol(), OP_BUYSTOP, 1.5, priceBuy, 100, priceSL, priceTP );
if( codeError == -1 )
Alert ( "BuyStop error: ", GetLastError() );

return( 0 );
}//±
 
而在这里,事实证明,有一些人用一个问题塞满了半个论坛。
 

我想做一个简单的owl..... 脚本,当下第一笔订单的SL和TP给出错误130,在哪里插入 Tralingstop的代码??

//+------------------------------------------------------------------+
//| установка мышкой отложенных ордеров                              |
//|                               Copyright © 2012, Хлыстов Владимир |
//|                                                cmillion@narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Хлыстов Владимир"
#property link      "cmillion@narod.ru"
#property show_inputs

//--------------------------------------------------------------------
extern int     Stoploss          = 0,     //стоплосс ордеров
               Takeprofit        = 0;     //тейкпрофит ордеров
extern double  Lot               = 0.1;   //лот
extern int     Magic             = 0;     //уникальный номер ордеров этого советника
extern bool    comment           = true;  //выводить информацию на экран
//--------------------------------------------------------------------
int start()
{
   int n;
   double SL,TP;
   double Price = NormalizeDouble(WindowPriceOnDropped(),Digits);
   string txt=StringConcatenate("Скрипт выставления рыночного ордера, старт ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
   while(true)
   {
      RefreshRates();
      if(Price>Ask) 
      {
         if (Takeprofit!=0) TP = NormalizeDouble(Ask + Takeprofit * Point,Digits); else TP=0;
         if (Stoploss!=0)   SL = NormalizeDouble(Ask - Stoploss   * Point,Digits); else SL=0;
         if (OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),0,SL,TP,"StopOrders",Magic,0,CLR_NONE)!=-1)
              {txt = StringConcatenate(txt,"\nВыставлен BUY ",DoubleToStr(Ask,Digits));break;}
         else txt = StringConcatenate(txt,"\nОшибка ",GetLastError()," выставления BUY ");
      }
      if(Price<Bid) 
      {
         if (Takeprofit!=0) TP = NormalizeDouble(Bid - Takeprofit * Point,Digits); else TP=0;
         if (Stoploss!=0)   SL = NormalizeDouble(Bid + Stoploss   * Point,Digits); else SL=0;
         if (OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),0,SL,TP,"StopOrders",Magic,0,CLR_NONE)!=-1)
              {txt = StringConcatenate(txt,"\nВыставлен SELL ",DoubleToStr(Bid,Digits));break;}
         else txt = StringConcatenate(txt,"\nОшибка ",GetLastError()," выставления SELL ");
      }
      if (comment) Comment("Попытка ",n," ",txt);
      n++;
      if (n>10) break;
   }
   if (comment) Comment(txt,"\nСкрипт закончил свою работу ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
   return(0);
}
//--------------------------------------------------------------------
 
MyTHblu:

我想做一个简单的owl..... 脚本,当下达第一笔订单时,SL和TP会出现错误130,在哪里插入Tralingstop的代码??


130 - 停止是错误的。再次仔细阅读你的经纪公司的条款,然后定期重读,以免你忘记。为什么你们都这么喜欢Alpari,它就像蜂蜜一样...


trawl的代码可以复制到开始,或者你可以使用一个单独的函数,同样,从开始。

 
evillive:

130--停顿是错误的。再次阅读你的经纪人的交易条件,然后定期重读,这样你就不会忘记。为什么你们都这么喜欢Alpari,它就像蜜汁...


trawl的代码可以复制到开始,或者你可以使用一个单独的函数,同样,从开始。


由于他从CodeBase拿了这只猫头鹰,他也可以用拖网选择另一只。而在阿尔卑斯山,你必须在没有SL和TP的情况下开盘,并立即通过放它们来修改订单。为什么他们不去阅读经纪人的条款和条件、论坛规则、MT4帮助和网站上写了一百次的信息,并在这里和谷歌上搜索?在提出基本问题之前?
 

如何连接代码....,有一个交易停止...我没有把它插入任何地方,也许它有一个错误,当编译时,它说'if'--表达式不允许在全局范围内使用,这似乎意味着在if.... 之前有一个错误吧?

extern bool UseTrailing = true;
extern int lMinProfit = 30;
extern int sMinProfit = 30;
extern int lTrailingStop = 15;
extern int sTrailingStop = 15;
extern int lTrailingStep = 5;
extern int sTrailingStep = 5;
//-----

if (UseTrailing) TrailingPositions();  

void TrailingPositions() 
{
  int cnt = OrdersTotal();

  for (int i=0; i<cnt; i++) {
        if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
        if (OrderSymbol() != Symbol()) continue;                

        if (OrderType() == OP_BUY) {
        if (Bid-OrderOpenPrice() > lMinProfit*Point) {
                if (OrderStopLoss() < Bid-(lTrailingStop+lTrailingStep-1)*Point) {
                OrderModify(OrderTicket(), OrderOpenPrice(), Bid-lTrailingStop*Point, OrderTakeProfit(), 0, Blue);
                }
        }
        }

        if (OrderType() == OP_SELL) {
        if (OrderOpenPrice()-Ask > sMinProfit*Point) {
                if (OrderStopLoss() > Ask+(sTrailingStop+sTrailingStep-1)*Point || OrderStopLoss() == 0) {
                OrderModify(OrderTicket(), OrderOpenPrice(), Ask+sTrailingStop*Point, OrderTakeProfit(), 0, Blue);
                }
        }
        }
  }
  
}