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

 
STARIJ:

アーテム、控えめな荒らしなのか、何を書いているのかわからないのか、どっちだ!!!!

前回の記事で、仕分けについてお話されていましたね。仕分けに依存しないことを説明。

時間による順番の選択については、ある議論を見てPARTICIPATEDしたことがあります。結論は、注文がサーバーに送信された時間に従って、注文データベースに登録されるようになったということだった。しかし、THEORETALLYには、開発者がこれを変更する恐れがあるのです。それでその話はおしまい。データベースの専門家として断言しますが、この不安は杞憂であり、変更 することは問題外です。この問題は、開発者に照会することができます。何かを書けば、何を書いているのかがわかる。番組制作50周年の節目です。もし 私の投稿の中に、あなたの視点からの混乱があることに気づいたら、直接私に手紙を書いて ください。私が説明すれば、あなたの疑問は解消されるでしょう。しかし、ここでは口論は適切ではなさそうだ。その人に台本を書いたら、ありがとうと言われたんです。いいんじゃないですか?

それは、突然仕分けに依存するようになった人たちが、同じ ように考えたことだ。人々の論理が崩壊したのだ。その後、再び仕分けへの依存がなくなりました。でも、もうすでにそうなっているんです。もしあなたが、自分のプログラムではなく、仮想的な不変のソートに依存したいのであれば、あなたにはその権利がありますが、初心者のヘルプスレッドでは、スクリプトを与えて、それがいつか失敗するかもしれないという事実に言及しないこと、そんな権利はないでしょう。6〜7年ほど前のmql4.comで、そのような議論が行われていたのを探してみてください。

それが私が申し上げた ことなのですが、その方はロスではなくストップロスのことをおっしゃっていたのです。

礼儀正しいが、正しいか間違っているかはわからない、と。)

 
Artyom Trishkin:

それが私が申し上げた ことなのですが、その方は損切りではなく、ストップロスの ことをおっしゃっていたのです。

彼はありがとうと言いました - それは礼儀正しいですが、彼はそれが正しいか間違っているかどうかは知りません;)

その人が書いていることをよく見てください。

X = OrderProfit( );        // запомнить величину тейкпрофита

if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))     // если ПОСЛЕДНИЙ ордер                  
if ( OrderType ()==OP_SELL)  // СЕЛ

if(X < 0)                 // и если этот сел закрылся по стопу 

ということは、注文に負けたことを指しているのだろう。そうやって彼はストップロスを理解しているのです。彼はストップロスという 言葉を持っていない。

あと、ストップはStopLossとTakeProfitの総称であることも書きたかったです。これを見るには、MetaEditorで130と入力し、F1キーを押してください。

停止する。複数形です。

私はここで仕事をしているのです、あなたのせいで気が散ってしまいます。

datetime -->TimeToStruct-->MqlDateTime どうやったらdatetimeに戻せるんだ?

 
STARIJ:

この人が書いたものをよく見てください

ということは、注文に負けたことを指しているのだろう。これが、彼がストップを理解する方法です。彼はストップロスという 言葉を持っていない。

また、ストップはStopLossとTakeProfitを一般化したものであることも伝えたかった。これを見るには、MetaEditorで130と入力し、F1キーを押してください。

停止する。複数形です。

私はここで仕事をしているのです、あなたのせいで気が散ってしまいます。

datetime --> TimeToStruct -->MqlDateTime どうやったらdatetimeに戻せるのでしょうか?

if(X < 0)                 // и если этот сел закрылся по стопу 

StructToTime()

 
виталик: 1時間足チャートに高値と安値を結ぶ線が引かれた。
//+-------------------------------------------------------+
//| на H1 суточную линию между хая и лоу         PROBA.mq4|
//+-------------------------------------------------------+
#property strict

void OnStart()
{
  // Удалим все объекты
  ObjectsDeleteAll();

  string Символ = "GBPUSD";
  datetime Первый, Последний;
  int Период=PERIOD_H1;

  // Прежде всего узнаем дату и время последнего бара
  Последний = iTime(Символ, Период, 0);
  Alert("Последний бар на часовом  ",Последний);

  // Теперь получить начало суток, обнулив часы
  // Для этого преобразуем время последнего бара в структуру
  MqlDateTime MqlПервый;
  TimeToStruct(Последний,MqlПервый);
  MqlПервый.hour=0;



  // Терерь надо обратно преобразовать во время
  Первый=StructToTime(MqlПервый);
  Alert("Первый бар на часовом  ",Первый); // Смотрим начало первого бара суток

  // По времени определим номер первого бара суток
  int НомерПервого=iBarShift(Символ, PERIOD_H1,Первый);
  Alert("Первый бар на часовом под номером ",НомерПервого);

// Можно было просто узнать время начала бара на D1


  
  // Теперь у нас есть НомерПервого бара, а номер послелнего = 0
  // Найдем на этом интервале номера баров, где макс и мин
  // iHighest и iLowest находят номер бара с макс и мин ценой
  int БарМакс = iHighest(Символ,  // symbol = инструмента
                Период,           // timeframe = Период
                MODE_HIGH,        // Наибольшая цена бара
                НомерПервого+1,   // Количество баров
                0);               // Начальный бар

  int БарМин  = iLowest(Символ,
                Период,
                MODE_LOW,         // Наименьшая цена бара
                НомерПервого+1,
                0);

  Alert("Максимальный бар = ", БарМакс, "  Минимальный бар = ", БарМин);

  // iHigh и iLow дают макс и мин цены указанного бара
  double max_price=iHigh(Символ, Период, БарМакс);
  double min_price=iLow (Символ, Период, БарМин);
  Alert("Максимум цены = ", max_price, "  Минимум цены = ", min_price);

  // Проводим линию
  ObjectCreate("Макс_Мин",OBJ_TRENDBYANGLE,0, Time[БарМакс], max_price, Time[БарМин], min_price);
  ObjectSet("Макс_Мин",OBJPROP_RAY,false);     // Выключить свойство бесконечного луча

  // Теперь хорошо бы узнать угол
  Alert("Угол = ", ObjectGetDouble(0,"Макс_Мин",OBJPROP_ANGLE));
}

// 0.0を返す 角度を設定して、それを取得する必要がある...
// そこで、価格差と最大値と最小値の間のバーの 数を知って、角度を計算する必要があります。
// もっと短くてもいいと思うんだけど...。

 
STARIJ:

// 0.0を返す 角度を設定してから取得すること...
// つまり、価格差とMaxとMinの間のバーの 数がわかっていれば、角度を計算する必要があります。
// もっと短くてもいいと思うんだけど...。


ありがとうございました )
 
Artyom Trishkin:   StructToTime()
ありがとうございます、見つかりました。すでに使っていることが判明。datetimeTimeToStruct MqlDateTimeの ヘルプで見ることができると期待していた。
 
-Aleks-:

例えば、4つのブーリアン変数を持っていて、それらを調べる必要がある場合、どのように変数を追加するのかがわかりません。

要は、割り算の後の余りが0以下になればいいのですが、その方法がわからないのです :(


ブーリアン演算の場合は、若干アプローチが異なります。

//+------------------------------------------------------------------+
//|                                                       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=15;  //0..162
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   for(int n=0;n<N;n++)
     {
      int tmp=n;
      bool a= (bool) MathMod(tmp,2);
      tmp=tmp/2;
      bool b= (bool) MathMod(tmp,2);
      tmp=tmp/2;
      bool c= (bool) MathMod(tmp,2);
      tmp=tmp/2;
      bool d= tmp;

      Print("N=",n,"; A=",a,"; B=",b,"; C=",c,"; D=",d);
     }

  }

二値符号化。

この場合の最大Nは16未満となる。

あなたが何を得たいのか理解できない

 
Victor Nikolaev:


ブーリアン演算の場合は、若干アプローチが異なります。

二値化

この場合の最大Nは16以下です

何を得ようとしているのか理解できない。

あなたは天才だ!ありがとうございました。

選択肢は16個になった。

2017.05.14 20:47:54.697 ブルート AUDUSD,H1: N=15; A=true; B=true; C=true; D=true
2017.05.14 20:47:54.697 ブルート AUDUSD,H1: N=13; A=true; B=false; C=true; D=true
2017.05.14 20:47:54.697 ブルート AUDUSD,H1: N=9; A=true; B=false; C=false; D=true
2017.05.14 20:47:54.697 ブルート AUDUSD,H1: N=1; A=true; B=false; C=false; D=false。
2017.05.14 20:47:54.697 ブルート AUDUSD,H1: N=5; A=true; B=false; C=true; D=false。
2017.05.14 20:47:54.697 ブルート AUDUSD,H1: N=3; A=true; B=true; C=false; D=false。
2017.05.14 20:47:54.697 ブルート AUDUSD,H1: N=11; A=true; B=true; C=false; D=true
2017.05.14 20:47:54.697 ブルート AUDUSD,H1: N=7; A=true; B=true; C=true; D=false。
2017.05.14 20:47:54.697 ブルート AUDUSD,H1: N=14; A=false; B=true; C=true; D=true
2017.05.14 20:47:54.697 ブルート AUDUSD,H1: N=6; A=false; B=true; C=true; D=false。
2017.05.14 20:47:54.697 ブルート AUDUSD,H1: N=10; A=false; B=true; C=false; D=true
2017.05.14 20:47:54.697 ブルート AUDUSD,H1: N=2; A=false; B=true; C=false; D=false。
2017.05.14 20:47:54.697 ブルート AUDUSD,H1: N=12; A=false; B=false; C=true; D=true
2017.05.14 20:47:54.697 ブルート AUDUSD,H1: N=4; A=false; B=false; C=true; D=false。
2017.05.14 20:47:54.697 ブルート AUDUSD,H1: N=8; A=false; B=false; C=false; D=true
2017.05.14 20:47:54.697 ブルート AUDUSD,H1: N=0; A=false; B=false; C=false; D=false。

使いたいこと・EAにフィルターやポジション管理のオプションが多数ある・ミニセット(既成の組み合わせ)を作るなどして組み合わせたい・その結果、サンプルに偏ることなく分析用のデータが得られるので、設定の結果への影響についての認識の幅が広がると期待しています。その結果は、これから詳しく分析することになります。それと、もうひとつ理由があって、統計を取るためのクラスで、限られた変数をファイルに保存するため、詳細な分析ができないんです。
 
виталик:

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

STARIJ

// 0.0を返す 角度を設定してから取得すること...
// つまり、価格差とMaxとMinの間のバーの 数がわかっていれば、角度を計算する必要があります。
// もっと短くてもいいと思うんだけど...。


インジケータとしてチャートを見る必要があると思うので、1日以上動くようにするにはどうしたらいいか。

#property indicator_chart_window
extern int boom = 1;
//=================================
void fishka(int ma,int mi,double map,double mip) // ф-ция
{
   ObjectCreate("Макс_Мин",OBJ_TRENDBYANGLE,0, Time[ma], map, Time[mi], mip);// Проводим линию
   ObjectSet("Макс_Мин",OBJPROP_RAY,false);     // Выключить свойство бесконечного луча
}

int deinit()
  {

 ObjectsDeleteAll();// Удалим все объекты
  return(0);
  }

void start()
{  
  string Символ = "GBPUSD";
  datetime Первый, Последний;
  int Период=PERIOD_H1;

  Последний = iTime(Символ, Период, 0);// Прежде всего узнаем дату и время последнего бара
 
if(boom){
   Alert("Последний бар на часовом  ",Последний);}
 
  
  MqlDateTime MqlПервый;              // Теперь получить начало суток, обнулив часы
  TimeToStruct(Последний,MqlПервый);  // Для этого преобразуем время последнего бара в структуру
  MqlПервый.hour=0;

  
  Первый=StructToTime(MqlПервый);            // Терерь надо обратно преобразовать во время
if(boom){
  Alert("Первый бар на часовом  ",Первый);}  // Смотрим начало первого бара суток
  
  int НомерПервого=iBarShift(Символ, PERIOD_H1,Первый);// По времени определим номер первого бара суток
if(boom){
   Alert("Первый бар на часовом под номером ",НомерПервого);}

// Можно было просто узнать время начала бара на D1

  // Теперь у нас есть НомерПервого бара, а номер послелнего = 0
  // Найдем на этом интервале номера баров, где макс и мин
  // iHighest и iLowest находят номер бара с макс и мин ценой
 int  БарМакс = iHighest(Символ,  // symbol = инструмента
                Период,           // timeframe = Период
                MODE_HIGH,        // Наибольшая цена бара
                НомерПервого+1,   // Количество баров
                0);               // Начальный бар

int  БарМин  = iLowest(Символ,Период,MODE_LOW,НомерПервого+1,0); // Наименьшая цена бара
                               
if(boom){
  Alert("Максимальный бар = ", БарМакс, "  Минимальный бар = ", БарМин);}
                                                                           

 
double max_price=iHigh(Символ, Период, БарМакс); // iHigh и iLow дают макс и мин цены указанного бара
double min_price=iLow (Символ, Период, БарМин);
   
    fishka(БарМакс,БарМин,max_price,min_price); // ф-ция
 if(boom){
   Alert("Максимум цены = ", max_price, "  Минимум цены = ", min_price);
 
   Alert("Угол = ", ObjectGetDouble(0,"Макс_Мин",OBJPROP_ANGLE));} // Теперь хорошо бы узнать угол               
}
 
STARIJ:

午前4時の場合 - 今日のためにまだ多くのバーがありません。H4では1日に6本しかありません。検索するバーの数 または交差するバーの数を設定する必要があります。

長距離=トレンド

スクリプトとして実行するとうまくいくのですが、EAとしてコンパイルすると、すべての行が互いに接近してしまい、何が問題なのかが分かりません。