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

 
Alexey Viktorov:

確かに、すべてのキーボードに私が書いたようなものがあるわけではありませんが...。キーボードを変えた方がいいのでは?



ここには「専門家」が多すぎる :)だから、からかおうと思ったんだ。質問に答えるどころか、説教を始める。

 
Luchezar Shalomaev:

ここには「専門家」が多すぎる :)だから、バカにすることにしたんです。質問に答える代わりに、講義を始める。

それから、贈り主をバカにするような立場に身を置いては、今後、自分の仕事に忙しく、気を抜いている人からの普通の答えは期待しないことです。

これはサーカスではありません。

 
Artyom Trishkin:

そして、あなたが贈り主のことを馬鹿にする立場に身を置く場合、彼らのビジネスに忙しく、あなたを助けるために気を取られている人々から、通常の応答は、将来的に期待しないでください。

これはサーカスではありません。



司会者様、もしこれがサーカスでないなら、私の質問に答えたピエロを舞台裏に連れて行っていただけませんか?ありがとうございます。

 
Luchezar Shalomaev:


司会者様、もしこれがサーカスでないなら、私の質問に答えたピエロを舞台裏に連れて行っていただけませんか?ありがとうございます。

これが裏の送り方なのでしょうか。

あなたです。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

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

ルシェザール・シャロマエフ さん 2017.09.20 22:25

こんにちは。DucascopyからEUR USD 1分足クォートファイルをダウンロードし、MT4 Alpariにインポートしようとしましたが、何も起こりません。ただ、真っ白な変換ウィンドウが表示されます。Instaforexでも同じです。それは何でしょう?

回答

あなたです。

回答

あなたです。

対応する。

あなたです。

あなたです。

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

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

アレクセイ・ビクトロフ さん 2017.09.21 09:34

本当にすべてのキーボードに、私が書いたようなことがあるわけではないのですが......。キーボードを変えた方がいいのでは?


あなたです。

F2キーを 押すと、見積書のダウンロードウィンドウが表示されます。

しかし、あなたは雑談を始め、雑談の返事をもらった。

何がしたかったの?よく言われるように、持って来たもの...。

 
Artyom Trishkin:

では、バックステージに送りましょうか?

あなたです。

回答

あなたです。

対応する。

あなたです。

対応する。

あなたです。

あなたです。

あなたです。


質問に対する 回答です。F2キーを 押すと、見積書のダウンロード画面が表示されます。

しかし、あなたは雑談を始め、それに対して雑談が返ってきたのです。

何がしたいんだ?よく言われるように、持って来たもの...。













まあ、サーカスではないと言うことですね。

 
Aleksey Vyazmikin:
一番簡単な書き方は、「ロジックがよくわからない......」ということです。は、言葉で表現できるでしょうか?

ロジックに不具合を発見修正し、動作するようになりました。

int Doji()
{

//Параметры Дожи
   double Open1 = NormalizeDouble (iOpen(Symbol(), PERIOD_H4,1),Digits);
   double Close1 = NormalizeDouble (iClose(Symbol(), PERIOD_H4,1),Digits);
   double High1 = NormalizeDouble (iHigh(Symbol(), PERIOD_H4,1),Digits);
   double Low1 = NormalizeDouble (iLow(Symbol(), PERIOD_H4,1),Digits);
   
//Параметры предыдущей свечи
   double Open2 = NormalizeDouble (iOpen(Symbol(), PERIOD_H4,2),Digits);
   double Close2 = NormalizeDouble (iClose(Symbol(), PERIOD_H4,2),Digits);
   double High2 = NormalizeDouble (iHigh(Symbol(), PERIOD_H4,2),Digits);
   double Low2 = NormalizeDouble (iLow(Symbol(), PERIOD_H4,2),Digits);
   
//Параметры индикатора волотильности ATR для нахожденя относительно большой свечи перед Доджи
   double ATR = iATR(Symbol(),PERIOD_H4,21,1);
   
   
//Математическое описание патерна Дожи
   if(Close1 < High1 -0.3*(High1-Low1) && 
      Open1 < High1 -0.3*(High1-Low1) && 
      Close1 > High1 -0.7*(High1-Low1) && 
      Open1 > High1 -0.7*(High1-Low1) && 
      MathAbs(Close1-Open1) < 0.2*(High1-Low1)&&
      MathAbs(Close2-Open2) > 0.7*ATR)
      {
         if((Close2 - Open2) > 0 && New_Bar == true)
         { 
            Print ("Down"); return(-1);// Условие для продаж
         }
         if((Close2 - Open2) < 0 && New_Bar == true)
         {
            Print ("Up"); return(1);// Условие для покупок
         }
      }
      return(0);
}
その誤りは、童子パターンの数学的記述にあった。
 

さて、タスクは以下の通りです。矢印の代わりに矩形を描き、最大と最小の童子、童子の開始 時間と童子後の新しいバーの開始時間でプロットする必要があります。しかも、これはすべて4時間足チャートでの話だ。同時に私は5分足チャートである必要があります。何かアドバイスはありますか?どのように実装するのか?

どうすればいいのかわかりません。

 
voron_026:

ロジックに不具合を発見修正したら使えるようになった。

その誤りは、童子パターンの数学的記述にあった。

よかったね。プログラミングをしたことがありますか?あなたのスタイルは典型的なものではありません。

voron_026 です。

さて、タスクは以下の通りです。矢印の代わりに矩形を描きます。矩形は最大と最小の童子、童子の開始時刻と 童子後の新しいバーの開始時刻で描かれます。しかも、すべて4時間足チャートで。同時に私は5分足チャートである必要があります。何かアドバイスはありますか?どのように実装するのか?

ありがとうございます。


関数内で計算される共通変数(グローバル変数)を宣言し、関数から返す void(){} .時間を定義できるのか...とにかく、まだ正確な質問が理解できていないんです。

ちなみに、以前はグローバル変数の考え方を知らずに、関数からすべての値を文字列変数で返していました...。

 
voron_026:

さて、タスクは以下の通りです。矢印の代わりに矩形を描き、最大と最小の童子、童子の開始 時間と童子後の新しいバーの開始時間でプロットする必要があります。しかも、これはすべて4時間足チャートでの話だ。同時に私は5分足チャートである必要があります。何かアドバイスはありますか?どのように実装するのか?

ありがとうございます。

OBJ_RECTANGLEを使用する必要があります。 H4チャートから価格と時間のデータを取得する方法を知っています。

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_RECTANGLE
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_RECTANGLE
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_RECTANGLE - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksey Vyazmikin:

よかったね。プログラミングをしたことがありますか?あなたのスタイルは典型的なものではありません。


関数内で計算される一般(グローバル)変数を宣言し,関数から返す void(){} .時間を決めることができるのか...とにかく、具体的に何を質問されているのかがわからないのです。

ちなみに、以前はグローバル変数の考え方を知らず、関数からの値をすべて文字列変数で返していました...。


こんにちはアレクセイVyazmikin 私はそんなに長い前にプログラミングをしています。少しずつですが、このテーマに入り込んでいます。

私はこの方法で試してみました。

//+------------------------------------------------------------------+
//|                                                          111.mq4 |
//|                                       Copyright 2017,UriyGlushko |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017,UriyGlushko"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern string Rodot           = "Параметры робота";
extern double Lots            = 0.2;
extern int    StopLoss        = 20;
extern int    TakeProfit      = 80;
extern int    Magic           = 999999;
extern int    Slippage        = 3; // Проскальзывание

extern bool UseDojiCandles = true; // Использование патерна Доджи
int DojiCandle = 0;
bool New_Bar = false;

datetime time0 = iTime(Symbol(),PERIOD_H4,0);
datetime time1 = iTime(Symbol(),PERIOD_H4,1);
double open0 = iOpen(Symbol(), PERIOD_H4,0);
double open1 = iOpen(Symbol(), PERIOD_H4,1);
double close1 = iClose(Symbol(), PERIOD_H4,1);
double high1 = iHigh(Symbol(), PERIOD_H4,1);
double low1 = iLow(Symbol(), PERIOD_H4,1);
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
  if (Digits == 3 || Digits ==5 )
  {
   TakeProfit *= 10;
   StopLoss   *= 10;
   Slippage   *= 10;
  }
 return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
  
   
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
Fun_New_Bar();

   if(UseDojiCandles = true && Doji() == 1 && New_Bar == true)
     {
      if(!ObjectCreate(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJ_RECTANGLE,0,time1,open1,time0,open0))
         {
         Print("Не удалось создать метку вверх");
         }
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_COLOR,clrRed);//--- установим цвет прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_STYLE,STYLE_SOLID);//--- установим стиль линий прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_WIDTH,1);//--- установим толщину линий прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_BACK,false);//--- отобразим на переднем (false) или заднем (true) плане 
         
         DojiCandle ++;
     }
   

   
   if(UseDojiCandles = true && Doji() == -1 && New_Bar == true)
     {
      if(!ObjectCreate(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJ_RECTANGLE,0,time1,open1,time0,open0))
         {
         Print("Не удалось создать метку вниз");
         }
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_COLOR,clrRed);//--- установим цвет прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_STYLE,STYLE_SOLID);//--- установим стиль линий прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_WIDTH,1);//--- установим толщину линий прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_BACK,false);//--- отобразим на переднем (false) или заднем (true) плане 

         DojiCandle ++;
     }
     

   
}
//+------------------------------------------------------------------+
//    Поиск всех объектов
//+------------------------------------------------------------------+


 




//+------------------------------------------------------------------+
//    Функция паттерна Доджи
//+------------------------------------------------------------------+
int Doji()
{

//Параметры Дожи
   double Open1 = NormalizeDouble (iOpen(Symbol(), PERIOD_H4,1),Digits);
   double Close1 = NormalizeDouble (iClose(Symbol(), PERIOD_H4,1),Digits);
   double High1 = NormalizeDouble (iHigh(Symbol(), PERIOD_H4,1),Digits);
   double Low1 = NormalizeDouble (iLow(Symbol(), PERIOD_H4,1),Digits);
   
//Параметры предыдущей свечи
   double Open2 = NormalizeDouble (iOpen(Symbol(), PERIOD_H4,2),Digits);
   double Close2 = NormalizeDouble (iClose(Symbol(), PERIOD_H4,2),Digits);
   double High2 = NormalizeDouble (iHigh(Symbol(), PERIOD_H4,2),Digits);
   double Low2 = NormalizeDouble (iLow(Symbol(), PERIOD_H4,2),Digits);
   
//Параметры индикатора волотильности ATR для нахожденя относительно большой свечи перед Доджи
   double ATR = iATR(Symbol(),PERIOD_H4,21,1);
   
   
//Математическое описание патерна Дожи
   if(Close1 < High1 -0.3*(High1-Low1) && 
      Open1 < High1 -0.3*(High1-Low1) && 
      Close1 > High1 -0.7*(High1-Low1) && 
      Open1 > High1 -0.7*(High1-Low1) && 
      MathAbs(Close1-Open1) < 0.2*(High1-Low1)&&
      MathAbs(Close2-Open2) > 0.7*ATR)
      {
         if((Close2 - Open2) > 0 && New_Bar == true)
         { 
            Print ("Down"); return(-1);// Условие для продаж
         }
         if((Close2 - Open2) < 0 && New_Bar == true)
         {
            Print ("Up"); return(1);// Условие для покупок
         }
      }
      return(0);
}
//+------------------------------------------------------------------+
//    Функция определения нового бара
//+------------------------------------------------------------------+
void Fun_New_Bar()                              // Ф-ия обнаружения нового бара 
  {                                             
  datetime TimeBar0 = iTime(Symbol(),PERIOD_H4,0);
   static datetime New_Time=0;                  // Время текущего бара 
   New_Bar=false;                               // Нового бара нет 
   if(New_Time != TimeBar0)                        // Сравниваем время 
     { 
      New_Time = TimeBar0;                         // Теперь время такое 
      New_Bar = true;                             // Поймался новый бар 
     } 
  }  

最初の矩形が描画され、残りの矩形は描画されません。どうすればいいのか、まだ考えているところです。ヒントをありがとうございます。また、ノンタイプのスタイルとはどういう意味でしょうか?