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

 
yaaarik777:

こんばんは!(^o^)

コードを書くのを手伝ってください、自分ではできる気がしません、以下が要点です。


要は、このスレッドで、苦しんでいる人、求めている人を助けようということです。
自分のために必要なら......これはフリーランスです。そして、何を手に入れたいかを伝えるために、何をやったかを示し、何を失敗したかを記述します。
 
Maxim Kuznetsov:
要は、このスレッドで、苦しんでいる人、求めている人を助けようということです。
あなたのために必要なら......それはフリーランスの中にある。そして、助けを得るためには、何を得たいのかを伝え、何をしているのかを示し、何が失敗したのかを記述する必要があります。


要は、ターミナルにある全ペアの注文ではなく、ある特定のペアの注文だけをEAに分析させる方法がわからないのです。

教科書には何がどう動くかは別々に書かれていますが、具体的な例があまりないので、できればアイデアやコード例を教えてください。

ご協力をお願いします。

ありがとうございます。

 
こんにちは。
久しぶりにドラえもんを手にしたら、なんと

どう遊べばいいのかわからない
助けてくださいということです。
RoshのZigZagインジケータを使った古き良き時代のEAがあります。
そして、スイス時計として問題なく動作しています。
本文の一番下に、エキスパートアドバイザーをダウンロードしないためのコードが添付されています。

の瞬間に注文が開閉される、というのがEAの考え方でした。

異なるジグザグが重なり合う
ここで、Roshインジケータを別のものに置き換える必要があります。

インジケーターで、MT3時代からのZigZagの最初のバージョンの1つでもあります。
しかし、このインディケータはジグザグ描画のアルゴリズムが異なっています。

名前はHigh_Low v2 (ZigZag)、(添付ファイルではなぜか名前がおかしくなっています)

直感的な方法で、時には条件を変えてみる。
double zz1 = iCustom( NULL, 60, "ZigZag_Rosh",12, 5, 3, 0, 0);
double zz2 = iCustom( NULL, 60, "ZigZag_Rosh",48, 20, 12, 0, 0);
において
double zz1 = iCustom( NULL, 0, "High_Low v2 (ZigZag)",300, 6, 0, 0);

double zz2 = iCustom( NULL, 0, "High_Low v2 (ZigZag)",300, 6, 0, 0);

すなわち、あるカスタム・インジケータの 名前とその

例えば、フラクタルの場合、私には効果的でした。

.
2つのジグザグが同じである必要はないため、パラメータは同じです。

ジグザグの偶然性は必要なく、そのバリエーションという事実だけが必要なのです。
すべてのTFで動作するように60番を0番に置き換えています。

交換後、EAはエラーなくコンパイルされましたが、EAにアタッチすると強く拒否されます。

さらに、Strategy Testerでの動作も拒否されます。

は働きたくありません。

問題は、「どうしたのか?
そしてもうひとつ、正しいやり方とは何なのか、という質問です。
ありがとうございます、大きな文字ですみません。


//+------------------------------------------------------------------+
//| ZZ.mq4
//| 著作権 © 2011, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "著作権 © 2011, MetaQuotes Software Corp.
#プロパティリンク "http://www.metaquotes.net"

#include <stdlib.mqh>.

#define MAGIC 20110220

extern double TakeProfit = 50;
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0)です。
}
//+------------------------------------------------------------------+
//| 専門家による初期化関数
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0)です。
}
//+------------------------------------------------------------------+
///オープンポジションの計算
//+------------------------------------------------------------------+
int CalculateCurrentOrders(文字列シンボル)
{
int pos=0;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)ブレーク。
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL) pos++;
}
}
//---- リターンオーダー数
if(pos>0) return(pos)
}
//+------------------------------------------------------------------+
//| 開注文条件のチェック
//+------------------------------------------------------------------+
void CheckForOpen()
{
int res;

//---- ZZを取得する
double zz1 = iCustom( NULL, 60, "ZigZag_Rosh",12, 5, 3, 0, 0);
double zz2 = iCustom( NULL, 60, "ZigZag_Rosh",48, 20, 12, 0, 0);
//---- 買付条件
if(CompareDoubles(zz1,Low[0]) && CompareDoubles(zz2,Low[0]))
{

res=OrderSend(Symbol(),OP_BUY,1,Ask,3,0,Ask+TakeProfit*Point,"",MAGIC,0,Bl)

ue)です。
を返します。
}
//---- 販売条件
if(CompareDoubles(zz1,High[0]) && CompareDoubles(zz2,High[0]))
{

res=OrderSend(Symbol(),OP_SELL,1,Bid,3,0,Bid-TakeProfit*Point,"", MAGIC,0,Re)

d);
を返します。
}

//----
}
//+------------------------------------------------------------------+
//|寄り付き注文の条件をチェックする|||etc.
//+------------------------------------------------------------------+
void CheckForClose()
{
//---- ZZを取得する
double zz1 = iCustom( NULL, 60, "ZigZag_Rosh",12, 5, 3, 0, 0);
double zz2 = iCustom( NULL, 60, "ZigZag_Rosh",48, 20, 12, 0, 0);
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)ブレーク。
if(OrderMagicNumber()!=MAGIC || OrderSymbol()!=Symbol()) continue;
//---- チェックオーダータイプ
if(OrderType()==OP_BUY)
{
if(CompareDoubles(zz1,High[0]) && CompareDoubles(zz2,High[0]))

OrderClose(OrderTicket(),OrderLots(),Bid,3)。
が壊れる。
}
if(オーダータイプ()==OP_SELL)
{
if(CompareDoubles(zz1,Low[0]) && CompareDoubles(zz2,Low[0]))

OrderClose(OrderTicket(),OrderLots(),Ask,3,White)を実行します。
が壊れる。
}
}
//----
}
//+------------------------------------------------------------------+
//| 機能開始
//+------------------------------------------------------------------+
void start()
{
//---- 履歴と取引を確認する
if(Bars<100 || IsTradeAllowed()==false) return;
//---- 現在のシンボルで未決済注文を計算する
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
else CheckForClose()。
//----
}
//+------------------------------------------------------------------+













MetaQuotes Software Corp.
MetaQuotes Software Corp.
  • www.metaquotes.net
Торговая платформа MetaTrader 5 - это бесплатный инструмент трейдера, позволяющий торговать на форексе и фондовых биржах.
ファイル:
 
yaaarik777:


要は、ターミナルにある全ペアの合計ではなく、ある特定のペアの注文だけをEAにカウントさせる方法がわからないのです。

EAで、ターミナル内の全ペアの合計ではなく、ある特定のペアの注文のみを計算させる方法がわかりません。

よろしくお願いします。

ぜひお願いします。

すべてのEAにオーダーループがあります。)

例えば https://www.mql5.com/ru/code/16588 (最初に出会ったもの)

  for(int index = orders-1; index >= 0; index--)
      {
      if(OrderSelect(index,SELECT_BY_POS,MODE_HISTORY)==false)
         {
         Print("Error in history!");
         break;
         }
      if(OrderSymbol()==symbol && OrderMagicNumber()==MAGICMA)
         {
         if(OrderType()==OP_BUY || OrderType()==OP_SELL)
            {
            if(OrderProfit()>0) break;
            if(OrderProfit()<0) losses++;
            }
         }
      }

if(OrderSymbol()==symbol &&OrderMagicNumber()==MAGICMA)" という条件は、まさに特定のシンボルと特定のマジックを持つ注文を選択するものである。

PS/上記のコピーペーストでOrderSelect エラーの場合のコードのブレークはかなり正しくありません、むしろcontinueを使用してください(どんな理由であれ、注文は選ばれません、多分いくつかの内部MetaTraderメカニズムに問題がある、しかし次の注文はスキップされません)。

Middle Moving Average
Middle Moving Average
  • 投票: 6
  • 2016.10.18
  • Dmitriy Kudryashov
  • www.mql5.com
Вариант советника, основанного на среднем значении цены для расчета Moving Average.
 
Maxim Kuznetsov:

すべての EAにオーダー ループが あります 。)

例えば https://www.mql5.com/ru/code/16588 (最初に出会ったもの)

CodeBaseにあるだけでなく、フォーラムの2つのスレッドのうちの1つにあります。重要なことは探し始めることで、異なる解釈で100以上あることでしょう。
 
ありがとうございます、訪問させていただきます
 

こんにちは、皆さん!買いまたは売りのシグナルを返す関数を書くのを手伝ってください。MQLでバーを操作する方法はまだ知りません(知らないことだらけですが!)。

条件は次のとおりです:親バーは、すなわち、高値と安値の内側には、終値(それは重要です!!正確に終値です)とバーです。一度いくつかのバーが親1を貫通し、高または低より上に閉じ、それは今では親バーになります!親バーは、その内部にある。

親バーの終値が始値より 高ければ、買いのシグナルを返します。

マザーバーの終値が始値より低ければ、売りのシグナルを返します。

外部変数にタイムフレームを設定することは非常に重要です。

しかし、ここで問題なのは、少なくとも私にとっては、エキスパートアドバイザーはどのようにチャート上の最後のマットバーを見つけることができますか? はい、視覚的に私はそれをすぐに見ることができます! ...。

最後のMATバーのインデックスを外部変数に指定して、そこから関数が踊り始めると便利なのですが、別の方法として、例えばインデックス50のバーを取って、ゼロまでループさせることも可能です。

とてもお願い孤児を助けてください!!!

 

こんにちは。

アイデアを教えてください。この価格ですでに注文が出されている場合は、EAが注文を出せないようにする必要があります。チェックをどのように実施するか?

 
Kot:

こんにちは。

アイデアを教えてください。この価格ですでに注文が出されている場合は、EAが注文を出せないようにする必要があります。チェックをどのように実施するか?

これは難しい課題です。やけくそで、スリッページを考慮して希望_価格/_ポイントにマジックオーダーを割り当てていたこともありました。

mql5ではもっと簡単です。要求価格と一致しない価格のポジションがあり、要求価格の注文があります。

 
Kot:

こんにちは。

アイデアを教えてください。この価格ですでに注文が出されている場合は、EAが注文を出せないようにする必要があります。チェックをどのように実施するか?


注文のループを書き、その中で各注文の 値を与えられた価格値と比較し、一致するものがあれば新規注文のフラグを立てないようにするのです。