プログラミングを勉強したことはないけれど、EAを書きたい。 - ページ 8

 

プログラマー諸氏、いかがお過ごしでしょうか。
このスレッドの著者である私は、アドバイスを求め続けています。


ということで、ヘッダで宣言された構造体では

で、ここからが面白いところなんですが、これは何なんでしょう?
OnTickで「未決済の注文がない場合」という条件を定義しました。
ということです。
速いスイングが遅いスイングより大きい場合。
then: オーダーを開始する。



の質問ですが、なぜ注文は1ティックごとに開くのでしょうか?

 
Sergey Lobzankin:

さて、プログラマーの皆さん、いかがお過ごしでしょうか。
このスレッドの筆者である私は、アドバイスを求め続けています。


そこで、ヘッダで構造体を宣言しました

そして、ここからが面白いのですが、これは何でしょう?
OnTickで「未決済の注文がない場合」という条件を定義しました。
ということです。
速いスイングが遅いスイングより大きい場合。
then: オーダーを開始する。



の質問ですが、なぜ注文は1ティックごとに開くのでしょうか?

刻み ごとに条件が満たされることを意味します。

MAクロスであるべき条件であれば、最初のバーでは<少なく、ゼロのバーでは>多くになった。しかし、あなたの条件では、ゼロバーで>より多く、最初のバーで>より多く。

 

https://code.org/

https://scratch.mit.edu/

MQLでプログラミング(言語ではなく、本当に考え方のスタイルです)を学ぼうと思ったら......それは自分にとっても周囲にとっても、本当に面倒なことです。

リンク先をクリックすると、すべてが簡単で、学校レベル(場所によっては小学校レベル)ですが、少なくともアルゴリズムとそれを書き出すことについての紹介があります。そうでなければ、くしゃみをするたびにフォーラムに問い合わせ、回答を待つことになり、時間の無駄、時は金なりです。

PS/そして、私はすべての人に読むことをお勧めします、スクラッチは内部からの傑作であり、現代のプログラミングの祖先です。

Code.org: Любой может научиться
Code.org: Любой может научиться
  • code.org
Каждый студент в каждой школе заслуживает возможность изучения компьютерных наук.
 
Sergey Lobzankin:

さて、プログラマーの皆さん、いかがお過ごしでしょうか。
トピックの筆者である私は、引き続きアドバイスをお願いします。


という構造体をヘッダで発表しました。

そして、ここからが面白いのですが、これは何なのでしょうか?
OnTickで「未決済の注文がない場合」という条件を定義しています。
ということです。
速いスイングが遅いスイングより大きい場合。
then: 注文を出す



の質問ですが、なぜ注文は1ティックごとに開くのでしょうか?

では、話題の作者同志?

1ヶ月前にもアドバイスしたのですが、注意もしないままです。

取引、自動売買システム、取引戦略のテストのためのフォーラムです。

プログラミングを勉強したことがないのですが、Expert Advisorを書きたいのです。

アレクセイ・ヴォルチャンスキー, 2018.04.10 17:47

Aaと書かれたボタンの左側に「Code」というボタンがあります。また、使い方がわからない場合は、例えば、自作のコードを掲載 するなどの使い方が考えられます)。


トレーディング、自動売買システム、ストラテジーテストのためのフォーラムです。

プログラミングを勉強したことがないのですが、Expert Advisorを書きたいのですが、どうしたらいいですか?

コンスタンチン・ニキーチン さん 2018.04.10 21:18

まあ、超自然的なものはないんでしょうけど。だから、最良の選択。ここに投稿する、ただし経由のみ

誰かが役に立つことを提案してくれるはずです。


しかも、画像付きでコードを挿入したままです。

 
こんにちは、私は以下の問題に直面しています。EAは、状況を分析し、さらに計算を行うために、ゼロと最初のバーの移動平均 データを必要とします。
OnCalculate関数は、基本的にインジケータを書くために考案されたものです。この関数をEA内で独立させたのですが、OnTickからアクセスする方法がわかりません。
 
Sergey Lobzankin:
こんにちは、私はそのような問題に遭遇しました。エキスパートアドバイザーは、状況を分析し、さらに計算を行うために、ゼロと最初のバーの移動平均 データを必要とします。
OnCalculate関数は、基本的にインジケータを書くために考案されたものです。この関数を別途EAに組み込んだのですが、OnTickからアクセスする方法が思いつきません。

OnCalculateをインジケータからEAに取り込もうとする必要すらありません!EA内のインジケータに適用(インジケータハンドルを使用)し、データを取得すればよいのです。

iMAコードでiMAとiStdDevを扱う例iStdDev- OnTickから抽出されたコード、iMA指標からデータを取得 する

   double ma_fast[],ma_normal[],stddev[];
   MqlRates rates[];
   ArraySetAsSeries(ma_fast,true);
   ArraySetAsSeries(ma_normal,true);
   ArraySetAsSeries(stddev,true);
   ArraySetAsSeries(rates,true);
   int buffer=0,start_pos=0,count=3;
   if(!iGetArray(handle_iMA_Fast,buffer,start_pos,count,ma_fast) || 
      !iGetArray(handle_iMA_Normal,buffer,start_pos,count,ma_normal) || 
      !iGetArray(handle_iStdDev,buffer,start_pos,count,stddev) || 
      CopyRates(m_symbol.Name(),Period(),start_pos,count,rates)!=count)
     {
      PrevBars=0;
      return;
     }
//---
   if(ma_fast[0]>ma_normal[0])
      if(rates[1].close>rates[1].open)
         if(rates[1].close>ma_normal[0])
            if(stddev[0]>stddev[1])
               m_need_open_buy=true;
   if(ma_fast[0]<ma_normal[0])
      if(rates[1].close<rates[1].open)
         if(rates[1].close<ma_normal[0])
            if(stddev[0]>stddev[1])
               m_need_open_sell=true;
 
Vladimir Karputov:

OnCalculateをインジケータからEAに取り込もうとする必要すらありません!Expert Advisorのインジケータに適用(インジケータハンドルを使用)して、データを取得するだけです。

iMAコードでiMAとiStdDevを扱う例iStdDev- OnTickからコード抽出、iMA指標からデータ取得

その通りだと思います。)
今度は、...を使って配列で遊んでみます。アレイ...

 

そして、もうひとつは...。
専門家の帽子でハンドルが正しくなりました

extern int    zazor      = 0;
extern double Lots       = 0.1;
extern int    TrailingStop = 15;
extern int    TrailingStep = 2;
extern int    Magic      = 123;
extern int    Slippage   = 5;
int Digits;

int timeprev=0;

int    ticket;
double price,TP,SL,lastlot;
string;

int ima1_handle          = iMA (Symbol(),0,14,0,MODE_EMA,PRICE_CLOSE);               //хендл
int ima2_handle          = iMA (Symbol(),0,64,0,MODE_EMA,PRICE_CLOSE);               //хендл
int Stoch_handle         = iStochastic (Symbol(),0,20,15,15,MODE_EMA,STO_CLOSECLOSE);//хендл
int ATR_handle           = iATR        (Symbol(),0,21);                              //хендл
double ima1_massiv [2];                                                              //статический массив для быстрой машки 

と掲示板で、誰がやっているのか・・・。オニニットもあればオンティクもある。
ただ、OnTickを使うときに、データを配列にコピーして、コピーする要素数を取得するのですが

void OnTick()
  { 
    int ima_count1 = CopyBuffer(ima1_handle,0,1,2,ima1_massiv);    //скопировал данные из 2х буферов быстрой машки
    string str_ima1 = IntegerToString(ima_count1);                 //отладочная
    printf("мой первый хендл = "  + str_ima1);                     //отладочная
   }
追伸:ちなみに、テスターはEAのヘッダーでハンドルを受け取ったすべての指標を見て、ビジュアライザーチャートにすべてを描画しています。
 

インジケーターデータへのアクセスを実装する方法を分かりやすく説明した記事はこちらです。
https://www.mql5.com/ru/articles/43

しかし、みんな、データは配列にコピーされます、間違いなく、私は特定の数字を取得する必要があります、つまり、現在のバーの最後のティックの波が1.32456であれば、私はログでこの数字を得る必要があります(数字が実際に得られることを確認する)、私はダブル 型にこの特定の情報を取り出す必要があるのです。

2つの異なるマッシュの間のint 型の点の数を計算する。この値を得るには どうしたらよいか?


Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • www.mql5.com
В MQL5 существует несколько вариантов вызова индикаторов, и осуществляются они в основном при помощи функций IndicatorCreate() и iCustom(). Причем эти функции лишь возвращают хендл индикатора, и дальнейшая работа с индикаторами ведется именно через него. Так что же такое хендл? Как работать с функциями IndicatorCreate() и iCustom()? И как...
 
Sergey Lobzankin:

インジケーターデータへのアクセスを実装する方法を分かりやすく解説した記事をご紹介します。
https://www.mql5.com/ru/articles/43

しかし、みんな、データは配列にコピーされます、間違いなく、私は特定の数字を取得する必要があります、例えば、現在のバーの最後のティックの波が1,32456であれば、私はログでこの数字を得る必要があります(数字が実際に得られることを確認するために)、私はダブル タイプでこの特定の情報を取り出す必要があるのです。

2つの異なるマッシュアップの間のint ポイントの数を計算するために、この値をどのように取得するのでしょうか?


言われたことをちゃんと見て読んでるのか?投稿 例を挙げました。2つのiMAからデータを取得して いるだけです。

   double ma_fast[],ma_normal[],stddev[];
   MqlRates rates[];
   ArraySetAsSeries(ma_fast,true);
   ArraySetAsSeries(ma_normal,true);
   ArraySetAsSeries(stddev,true);
   ArraySetAsSeries(rates,true);
   int buffer=0,start_pos=0,count=3;
   if(!iGetArray(handle_iMA_Fast,buffer,start_pos,count,ma_fast) || 
      !iGetArray(handle_iMA_Normal,buffer,start_pos,count,ma_normal) || 
      !iGetArray(handle_iStdDev,buffer,start_pos,count,stddev) || 
      CopyRates(m_symbol.Name(),Period(),start_pos,count,rates)!=count)
     {
      PrevBars=0;
      return;
     }
//---
   if(ma_fast[0]>ma_normal[0])
      if(rates[1].close>rates[1].open)
         if(rates[1].close>ma_normal[0])
            if(stddev[0]>stddev[1])
               m_need_open_buy=true;
   if(ma_fast[0]<ma_normal[0])
      if(rates[1].close<rates[1].open)
         if(rates[1].close<ma_normal[0])
            if(stddev[0]>stddev[1])
               m_need_open_sell=true;

iMAの指標には「Fast」と「Normal」の2つがあります。これら2つの指標のデータは、それぞれ配列ma_fastma_normal で取得される。バーから#start_posのカウントを 要求する。

そして、得られたデータにアクセス します(この例では、バー#0のデータにアクセスします)。