MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1342

 
Порт-моне тв:

どなたか助けてください。

図の名前に悩まされないために、最も新しいポイントの日付の図を見つけることができます。そして、この図が見つかったとき、どのようなイベントを追跡すべきか、ということが問われます。水平、垂直、トップダウン、ボトムアップの交わり。

注目すべきはOnChartEventという イベントです。

 

こんにちは。

以前は、インジケーターの値をモニターに表示するコードに制限をかけることができましたが、今はどうでしょうか?しかし、このインジケータでは何も機能しません。もしかしたら、コードに制限をかけるのを手伝ってくれるかもしれませんね。お願い!

ありがとうございました。

ファイル:
Tipu_MACD.mq4  18 kb
 

こんにちは。Bid priceの計算方法を教えてください。

基準(第一)通貨がドルで、ピップ値が一定ではなく価格に依存する通貨ペアで、複数のBUYポジションの利益が合計ゼロとなるBid価格はどのように計算すればよいですか?

ドルがクォート(第2)通貨で、ピップ値が一定であるペアについて、私はこの関数を導出しました。

double Null_BUY(){ 
   double null=0; double summ_count=0; double lots_count=0; double position_count=0;
   for (int i=OrdersTotal()-1; i>=0; i--){
     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
        if (OrderSymbol() == Symbol() ){
            if(OrderType()==OP_BUY ){
               position_count=Bid-((OrderProfit()+OrderSwap()+OrderCommission()) / OrderLots()*MarketInfo(Symbol(), MODE_TICKVALUE))*Point; 
               summ_count+=position_count*OrderLots();
               lots_count+=OrderLots();
            }
         }
      }
   }
   if(lots_count!=0) null=NormalizeDouble(summ_count/lots_count, Digits);
   return(null);
}
 
Forallf:

ヒントを教えてください。グラフに線分を描きました。セグメントの開始価格と終了価格を知りたいのですが。それは可能なのか?

一例を見つけました。こんな感じで作りました。

//+------------------------------------------------------------------+
//|                                                        линия.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {  
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   //Проверим что есть трендовая линия и она в единственном экземпляре:
   if(ObjectsTotal(OBJ_TREND)!=1)
   {Comment("Нарисуйте 1 трендовую линию!");}

   //Получим ИМЯ трендовой линии:
   for(int i=0;i<ObjectsTotal();i++)
     {
      string name=ObjectName(i);
      if(ObjectType(name)==OBJ_TREND)
        {
         datetime t1=ObjectGet(name,OBJPROP_TIME1);
         datetime t2=ObjectGet(name,OBJPROP_TIME2);
         double p1=NormalizeDouble(ObjectGet(name,OBJPROP_PRICE1),Digits);
         double p2=NormalizeDouble(ObjectGet(name,OBJPROP_PRICE2),Digits);
         Comment(p1,"   ",p2);
        }
     }
  }
//+------------------------------------------------------------------+

もう1つ、最初のセグメントの真ん中に水平になるようなセグメントを作るのを手伝ってください。1つ目のセグメントの長さを変えるので、2つ目のセグメントの位置も変わるはずです。PRICE2の10本先のキャンドルから描画する。

ファイル:
EURUSDM12.png  25 kb
 
Forallf:

一例を発見。このように作りました。

最初のセグメントの真ん中に水平になるような、もう一つのセグメントを作るのを手伝ってください。1つ目のセグメントの長さを変えるので、2つ目のセグメントの位置もそれに合わせて変えてください。PRICE2の10本先のキャンドルから描画する。

このように


369
369
  • 2021.01.07
  • www.youtube.com
лин
 
Iurii Tokman:

それじゃ


だから
 
Forallf:
そうですね。

この自転車は、フィボナッチ線と呼ばれる端末の標準機能

 
Iurii Tokman:

この自転車は、フィボナッチ線と呼ばれる端末の標準機能

真ん中は例のごとく私用です。違う、計算されたレベルがあるはずです。
 
Forallf:
真ん中は例のごとく私の分です。もう一段階、計算されたレベルがあるはずです。

座標を知ることで、直線上の任意の点を見つけることができます。あなたの場合、セグメントの開始価格と終了価格、日付がわかっています。また、中間の価格=(開始価格+終了価格)/2も求めることができる。あるいは、あなたが使っている他のフォーミュラでもかまいません。

さて、最初の関数を使って、セグメント上のある点の時刻を求めることができる。

//находит дату точки (координату X) на прямой, на заданную цену (координата Y)
datetime GetPointTimeOnStraight(datetime eTime1, double ePrice1, datetime eTime2, double ePrice2, double ePrice3, string eSymbol, int eTimeFrame)
   {
   if(ePrice2-ePrice1==0) return(0.0);
   //индекс бара соответствующий заданному времени, возможно задавать будующее время
   int eIndex1=(eTime1>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime1)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime1);
   int eIndex2=(eTime2>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime2)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime2);
   int eIndex3=eIndex1+(int)((eIndex2-eIndex1)*(ePrice3-ePrice1)/(ePrice2-ePrice1));
   return(iTime(eSymbol,eTimeFrame,eIndex3));
   }

//находит цену точки (координату Y) на прямой, на заданное время (координата X)
double GetPointPriceOnStraight(datetime eTime1, double ePrice1, datetime eTime2, double ePrice2, datetime eTime3, string eSymbol, int eTimeFrame)
   {
   //индекс бара соответствующий заданному времени, возможно задавать будующее время
   int eIndex1=(eTime1>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime1)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime1);
   int eIndex2=(eTime2>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime2)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime2);
   if(eIndex2-eIndex1==0) return(0.0);
   int eIndex3=(eTime3>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime3)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime3);
   return(ePrice1+(ePrice2-ePrice1)*(eIndex3-eIndex1)/(eIndex2-eIndex1));
   }
 
Aleksei Stepanenko:

まあ、意味がわからないなら、ヒントを出さないとね。

わかった気がする!!!ありがとうございます。