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

 
kalmyk87:

你好!我不能在metatrader4中授权mql5来订阅信号...怎么办?


写一个请求给servicedesk(在左边的资料中),并附上细节和屏幕截图。

 

猫头鹰应该在几对上耕作,最好是每买图的两只猫头鹰与自己分开。

就像现在这样,它可以开到无限大


int _OrdersTotal=OrdersTotal()。

for (int i=_OrdersTotal-1; i>=0; i--) {

如果(OrderSelect(i,SELECT_BY_POS)){

如果(OrderMagicNumber() == Magic){

如果(OrderSymbol() == Symbol(){

如果(OrderType() == OP_BUY){

}}}}}

如果(MaPrevious>MaPrevious1)

{

ticket=OrderSend(Symbol(,OP_BUY,Lots,Ask,3,Ask-StopLoss*Point ,Ask+TakeProfit*Point, "macd sample",Magic,0,Green);

如果(ticket>0)

{

如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("BUY订单打开:",OrderOpenPrice())。

}

否则

Print("Error opening BUY order : ",GetLastError())。

返回。

}

 

帮助谁可以

 

大家下午好!

我知道有可能在指标中实现信号输出。

a).当它出现在当前条形图上而不等待它关闭时。在这种情况下,在收盘后,信号可以被取消。

b).在出现信号的条形图收盘后。

我对变体a)感兴趣。如何在一个指标中实现警报,而不需要等待条形图的关闭?

我试图在指标代码的第39行将其作为参数选择来实现,但没有成功。如何正确操作?


extern int shift = 0; // 在哪个条形上考虑信号:0--在当前条形上;1--在封闭条形上。


如果能得到帮助,我将非常感激!

附加的文件:
 
Tornado:

大家下午好!

我知道有可能在指标中实现信号输出。

a).当它出现在当前条形图上而不等待它关闭时。在这种情况下,在收盘后,信号可以被取消。

b).在出现信号的条形图收盘后。

我对变体a)感兴趣。如何在一个指标中实现警报,而不需要等待条形图的关闭?

我试图在指标代码的第39行将其作为参数选择来实现,但没有成功。如何正确操作?


extern int shift = 0; // 在哪个条形上考虑信号:0--在当前条形上;1--在封闭条形上。


我将非常感谢您的帮助!


我得到的信息大约是这样的

//+---------------------------------------------------------------------------------+
//+ MA2_Signal                                                                      +
//+ Индикатор сигналов при пересечении 2-х средних                                  +
//+                                                                                 +
//+ Внешние параметры:                                                              +
//+  ExtPeriodFastMA - период быстой средней                                        +
//+  ExtPeriodSlowMA - период медленной средней                                     +
//+  ExtModeFastMA   - режим быстой средней                                         +
//+  ExtModeSlowMA   - режим медленной средней                                      +
//+   Режимы: 0 = SMA, 1 = EMA, 2 = SMMA (сглаженная), 3 = LWMA (взвешенная)        +
//+  ExtPriceFastMA  - цена быстрой средней                                          +
//+  ExtPriceSlowMA  - цена медленной средней                                       +
//+   Цены: 0 = Close, 1 = Open, 2 = High, 3 = Low, 4 = HL/2, 5 = HLC/3, 6 = HLCC/4 +
//+---------------------------------------------------------------------------------+
#property copyright "Copyright © 2015, Karakurt (mod. GromoZeka 2017)"
#property link      ""

//---- Определение индикаторов
#property indicator_chart_window
#property indicator_buffers 4
//---- Цвета
#property  indicator_color1 Red // 5
#property  indicator_color2 Green        // 7
#property  indicator_color3 DeepSkyBlue
#property  indicator_color4 Magenta
#property  indicator_width1 2
#property  indicator_width2 2
#property  indicator_width3 2
#property  indicator_width4 2


//---- Параметры
extern int    ExtPeriodFastMA = 8;
extern int    ExtPeriodSlowMA = 20;
extern int    ExtModeFastMA   = 1; // 0 = SMA, 1 = EMA, 2 = SMMA, 3 = LWMA
extern int    ExtModeSlowMA   = 1; // 0 = SMA, 1 = EMA, 2 = SMMA, 3 = LWMA
extern int    ExtPriceFastMA  = 0; // 0 = Close, 1 = Open, 2 = High, 3 = Low, 4 = HL/2, 5 = HLC/3, 6 = HLCC/4
extern int    ExtPriceSlowMA  = 0; // 0 = Close, 1 = Open, 2 = High, 3 = Low, 4 = HL/2, 5 = HLC/3, 6 = HLCC/4
extern int shift=0;      // На каком баре считать сигнал: 0 - на текущем; 1 - на закрытом
extern bool   EnableAlert=true;
extern bool   EnableSendNotification=false;
extern bool   EnableSendMail  =  false;
extern bool   EnableSound     = false;
extern string ExtSoundFileNameUp = "Покупаем.wav";
extern string ExtSoundFileNameDn = "Продаем.wav";

//---- Буферы
double FastMA[];
double SlowMA[];
double CrossUp[];
double CrossDown[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- Установка параметров прорисовки
//     Средние
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
//     Сигналы
   SetIndexStyle(2,DRAW_ARROW,EMPTY);
   SetIndexArrow(2,233);
   SetIndexStyle(3,DRAW_ARROW,EMPTY);
   SetIndexArrow(3,234);

//---- Задание буферов
   SetIndexBuffer(0,FastMA);
   SetIndexBuffer(1,SlowMA);
   SetIndexBuffer(2,CrossUp);
   SetIndexBuffer(3,CrossDown);

   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));

//---- Название и метки
   IndicatorShortName("MA2_SignalV2("+ExtPeriodFastMA+","+ExtPeriodSlowMA);
   SetIndexLabel(0,"MA("+ExtPeriodFastMA+","+ExtPeriodSlowMA+")"+ExtPeriodFastMA);
   SetIndexLabel(1,"MA("+ExtPeriodFastMA+","+ExtPeriodSlowMA+")"+ExtPeriodSlowMA);
   SetIndexLabel(2,"Buy");
   SetIndexLabel(3,"Sell");

   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   double AvgRange;
   int    iLimit;
   int    i;
   int    counted_bars=IndicatorCounted();

//---- check for possible errors
   if(counted_bars<0)
      return ( -1 );

//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;

   iLimit=Bars-counted_bars;

   for(i=iLimit; i>=0; i--)
     {
      FastMA[i] = iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i );
      SlowMA[i] = iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i );
      AvgRange=(iMA(NULL,0,10,0,MODE_SMA,PRICE_HIGH,i)-iMA(NULL,0,10,0,MODE_SMA,PRICE_LOW,i))*0.1;
      CrossDown[i+1]=EMPTY_VALUE;
      CrossUp[i+1]=EMPTY_VALUE;

      if((FastMA[i+1]>=SlowMA[i+1]) && (FastMA[i+2]<=SlowMA[i+2]) && (FastMA[i]>SlowMA[i])) // пересечение вверх
        {//
         CrossUp[i+1]=SlowMA[i+1]-Range*0.75;
        }

      if((FastMA[i+1]<=SlowMA[i+1]) && (FastMA[i+2]>=SlowMA[i+2]) && (FastMA[i]<SlowMA[i])) // пересечение вниз
        {//
         CrossDown[i+1]=SlowMA[i+1]+Range*0.75;
        }
     }
   static datetime TimeAlert=0;
   if(TimeAlert!=Time[0])
     {
      TimeAlert=Time[0];
      if(CrossUp[shift]!=EMPTY_VALUE)
        {
         if(EnableAlert) Alert("MA 8-20 ",Symbol()," ",Period(),"M - BUY "); // звуковой сигнал
         if(EnableSound) PlaySound(ExtSoundFileNameUp);
         if(EnableSendNotification) SendNotification("MA 8-20 EUR_H1 - BUY"); // push-уведомление
         if(EnableSendMail) SendMail("MA 8-20: ",Symbol()+" , "+Period()+" мин.-  BUY!"); // email-уведомление
        }
      if(CrossDown[shift]!=EMPTY_VALUE)
        {
         if(EnableAlert) Alert("MA 8-20 ",Symbol()," ",Period(),"M - SELL "); // звуковой сигнал
         if(EnableSound) PlaySound(ExtSoundFileNameDn);
         if(EnableSendNotification) SendNotification("MA 8-20 EUR_H1 - SELL"); // push-уведомление
         if(EnableSendMail) SendMail("MA 8-20: ",Symbol()+" , "+Period()+" мин.- SELL!"); // email-уведомление
        }
     }
   return (0);
  }
//+------------------------------------------------------------------+

我已经删除了一些不必要的东西。我已经简化了一些事情

 
Victor Nikolaev:

这或多或少是我所得到的。

我删除了一些不必要的东西。简化了一些事情。


非常感谢你。我会试一试的。

 
Victor Nikolaev:

这或多或少是我得到的东西。

我删除了一些不必要的东西。简化了一些事情。


这是不幸的,但它不起作用。我在M5时间框架上试了一下,以便更快地检查它。该信号仅在条形图关闭时出现,而不是在当前条形图上的平均数被穿越时出现。在大型框架上测试。

 
//+------------------------------------------------------------------+
class A
  {
public: int       propA;
public:
                     A(void) {propA = 15;};
                    ~A(void) {};
  };
//+------------------------------------------------------------------+
class B: public A
  {
public:
                     B(void){};
                    ~B(void){};
  };
//+------------------------------------------------------------------+
void OnStart()
  {
   B newObj;
   GetA(newObj);
//---
   //B newObjArray[3];
   //GetA_Array(newObjArray);
  }
//+------------------------------------------------------------------+
void GetA(A &obj)
  {
   Print(obj.propA);
  }
//+------------------------------------------------------------------+
void GetA_Array(A &obj[])
  {
   for(int i=0;i<ArraySize(obj);i++)
      Print(obj[i].propA);
  }
//+------------------------------------------------------------------+

如果我们取消对OnStart()中的其余几行的注释,我们会得到 "newObjArray - 参数转换不允许"。

两个问题:为什么,以及如何解决这个问题?

 
Tornado:

这是不幸的,但它不起作用。在M5时间段尝试了一下,以便更快地检查。该信号仅在条形图关闭后出现,而不是在当前条形图上的平均数被穿越时出现。我已经在大的时间框架上测试了它。


看来我们只是不了解对方。

 

朋友们好。

如何使止损、盈利和追踪值显示为百分比而不是点。

这个公式太杂乱了,根本不起作用

StopLoss=NormalizeDouble(Bid-(Bid-TrailingStop)/100*TRAL_PERCENT,Digits)。

我希望能有最简单的百分比形式。

双倍止损=0.05。

--------

利润=出价-停损,以百分比为单位(这是一个混乱的例子,但只是为了清楚地说明问题)。

谢谢你。