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

 
Aleksandr Verkhozin:


外部インジケータの操作に関するビデオを見て、テスターでバッファの値を見るためのコードを少し書きました。

void OnTick()

{

double Buf1=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",0,1);

double Buf2=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",1,1);

double Buf3=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",2,1);

double Buf4=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",3,1);

Comment("Buf1=",Buf1,"\n", "Buf2=",Buf2,"\n","Buf3=",Buf3,"\n","Buf4=",Buf4);

}

可視化モードでは、ゾーンが現れたり消えたりします。しかし、バッファの値はいずれにせよ常にゼロです。これらのゾーンをコードで正式に表現する方法はないのでしょうか?

もしかしたら、iCustom以外に、このような指標に適した関数があるかもしれませんね。もしかしたら、このような指標を持ったフクロウを書いた人がいるかもしれませんね。


インジケータ・バッファの 使い道がない、フラクタルな値を保存している。

インジケーターのプロパティで、fractals_show = trueを指定すると、チャート上に表示されます。

ゾーン、グラフィカルオブジェクト OBJ_RECTANGLE

を使用して、これらのゾーンの値を取得できます。


オブジェクトゲット

指定されたオブジェクトのプロパティの値を返します。

doubleObjectGet()
stringobject_name,// オブジェクト名
intindex// プロパティ識別子
);


すべてのオブジェクトをループさせ、正しいオブジェクトを見つけ、道を探すのです。

 int obj_total=ObjectsTotal(); 
  string name; 
  for(int i=0;i<obj_total;i++) 
    { 
     name = ObjectName(i);
     Print(i," - объект ",name); 
    }

おおよそ、以下のような感じです。

 
Artyom Trishkin:
このスレッドでちょうど、送られてきた指標値を計算に使うトロールのテンプレートを投稿したんだよね。調べろ、怠けるな。

オープンポジション に正しいトレーリングストップが必要です。 最終的には1つか3つのポジションがあり、それらはステップ値でリンクしています。 ストップ/リバースシステムであるステップ。あるいは、CalculateProfit()関数を使用して、すべての注文でトレールする方が簡単かもしれません。さて、この注文処理方式における指標値が、オープンポジションの総利益をトレールすることにどのように関係するのか、私にはわかりません。
 
geratdc:

オープンポジションの 利益に対して正確なトレーリングストップが必要です。 最終的には1つまたは3つのポジションがあり、それらはステップ値によって制限されています、つまり、ストップ&リバースシステムです。あるいは、CalculateProfit()関数を使用して、すべての注文でトレールする方が簡単かもしれません。さて、この注文処理方式における指標値が、オープンポジションの総利益をトレールすることにどのように関係するのか、私にはわかりません。

指標、その値は、例えば、目的のバーのMAK以外の値であってもよい。ポジションのトータルストップを移動させるために計算された価格の値をトロールに送信することができます。

しかし、オープンポジションでどのようなトロールをしているのか、具体的に何をいつトロールしているのかは不明です。

 
geratdc: 利益を得るための正しいトローリングを探しています

すべてのトレイルがここに ある。TrailingFuncLib.mq4から、関数TrailingStairs - STANDARD-STANDARD Trailingを取り出します。各オーダーは独立してトレールされます。

 
Artyom Trishkin:

指標、その値は、例えば、目的のバーのMAK以外の値であってもよい。ポジションのトータルストップを移動させるために計算された価格の値をトロールに送信することができます。

しかし、オープンポジションでどのようなトロールをしているのか、具体的に何をいつトロールしているのかは不明です。


原則的にはそうですが、以前、平均価格でトロールを提案されたことがあります。すべてが論理的であるように見えますが、平均価格というのはどういう意味なのでしょうか?(1注文の価格 + Step*Point + (2注文の価格 + Step*Point) + 3注文の価格) / 3 ですか?つまり、オープンポジションと各ポジションの現在の価格を呼び出す必要があり、多くのパラメータが必要なのです。とにかく、このトレーリングストップは、EAがテスト中に値を失うという事実よりも、私を悩ませています。実際の取引ではどうなるのでしょうか?設定可能ですが、やはり為替チャートが1週間後、1ヶ月後にどのような動きをするか分からないので、1つ弱点があります。3つの注文を出した後、相場に反対運動があると、Expert Advisorはドローダウンにより失敗します。そこで、ドローダウンを制限し、保証金がゼロになる前にポジションを 閉じることを考えなければならない。長い話を短くすると、私が一番興味を持ったのはフォックスです)))
 

自分でもわからないし、具体的な情報もない(( コードに価格の境目をマークすることで、インジケータが構築した最も近いゾーンを表示することです。コードを書き始めたが、混乱しており、自分のやり方が正しいのかどうかわからない。自分のやり方が正しいのか間違っているのか、わからない。

 int obj_total=ObjectsTotal();       

  string name; 

  for(int i=0;i<obj_total;i++)

  {

  name = ObjectName(i); 

  if(ObjectType(name)==OBJ_RECTANGLE)

  {

    pr1=ObjectGet(name,OBJPROP_PRICE1);// верхняя цена зоны

    pr2=ObjectGet(name,OBJPROP_PRICE2);// нижняя цена зоны

  }  

  }  

そして、なぜ私のコードは、元のように、ここに挿入されていない、多色と行の隣に?
ファイル:
 
-Aleks-:

どうやら端末のメモリが足りないようで、いくつかのチャートを閉じたらうまくいきました。

ありがとうございます。確かに、計算が行われますね。

また、変数がint型ではなくbool型だった場合はどうすればいいのでしょうか?


//+------------------------------------------------------------------+
//|                                                       Decode.mq4 |
//|                                            Copyright 2017, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Vinin"
#property link      "http://vinin.ucoz.ru"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int N=162;  //0..162
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   for (int n=0;n<N;n++)
   {
      int tmp=n;
      int a=(int) MathMod(tmp,3);
      tmp=(tmp-a)/3;
      int b=(int) MathMod(tmp,3);
      tmp=(tmp-b)/3;
      bool c= (bool) MathMod(tmp,2);
      tmp=(tmp-c)/2;
      int d=tmp;
   
      Print("N=",n,"; A=", 2+2*a, "; B=", b+1,"; C=",c,"; D=", 16+4*d);
   }
  }
//+------------------------------------------------------------------+
 
Victor Nikolaev:

申し訳ないのですが、このコードは前回と違うのでしょうか?
 
-Aleks-:

失礼ですが、このコードは前回と違うのでしょうか?


その差はごくわずかです。変数の1つは論理的である。

出力はtrueまたはfalseと表示されます

 
Victor Nikolaev:


その差はごくわずかです。変数の1つは論理的である。

出力はtrueまたはfalseと表示されます

前回掲載したコードは本当に見たのですか?もしそうなら、休息が必要だ...。ありがとうございました。