どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 1153

 
kalmyk87:

こんにちは!メタトレーダー4でmql5を認証してシグナルを購読 することができません...どうしたらいいですか?


servicedesk(左のプロファイル内)に、詳細とスクリーンショットを添えてリクエストを書き込んでください。

 

フクロウは何組か、できれば自前とは別に購入チャートごとに2羽で耕すのが望ましい。

そのまま、無限大に広がる


int _OrdersTotal=OrdersTotal();

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

if (OrderSelect(i,SELECT_BY_POS)){

if (OrderMagicNumber() == Magic) { (オーダーマジック番号)

if (OrderSymbol() == Symbol()){

if (OrderType() == OP_BUY){

}}}}}

if(MaPrevious>MaPrevious1)

{

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

if(チケット>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("BUY order opened : ",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 - parameter conversion not allowed」と表示されます。

なぜなのか、どうすれば直るのか、2つの疑問があります。

 
Tornado:

残念なことですが、うまくいきません。より速く確認するために、M5タイムフレームで試しました。シグナルが表示されたのは、バーが閉じられた後であり、現在のバーで平均が交差したときではありません。大きなタイムフレームでテストしてみました。


私たちはお互いに理解し合えてないだけみたいですね。

 

こんにちは、友人たち。

ストップロス、テクプロフィット、トレイリングの値をピップスではなくパーセントで表示させる方法。

この数式はごちゃごちゃしすぎていて、まったく機能しない。

StopLoss=NormalizeDouble(Bid-(Bid-TrailingStop)/100*TRAL_PERCENT,Digits)となります。

一番シンプルな形のパーセンテージが欲しいです。

ダブルストップロス=0.05。

--------

利益=ビッド-ストップロスのパーセンテージ(雑な例ですが、わかりやすくするためです。)

ありがとうございます。