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

 
Artyom Trishkin:

誰もあなたのことを「カモ」だなんて言ってませんよ、そんなこと。でも、4~6行のコードも、ほら、困惑の原因になりますよね。人が何かを学ぶということは、すでに何かを試している、何かを書こうとしている、そして明らかに4~6行ではそれに適合しないことをすでに見抜いているはずですから。

何をしようとしたのか、見せてください - 理解する努力をしましょう。

ティックでレベルクロスを探すのではなく、MA(1)で探すのです - そうすれば、バー1のMAとバー0のMAが必要なレベルクロスの指標として使われます。


回答が長くなってしまい申し訳ありません。単なるモヤモヤで済んでよかったです、慌てちゃいました。そして、私の質問ですが、価格に達したときに通常の注文を開き、その価格を超えたら二度と開かないようにするコードを書くことが出来ました。でも、私はこの方法でやりました。
double b = 5;
int start()
{
ダブルビッド=Bid;
if (bid==0.7777 && b==5)
{
b=b+1です。
OrderSend(Symbol(), OP_BUY, 0.1, Ask, 0,0,0);
}

を返します。

これは「幼稚園」方式で、ニュアンスが違いすぎて全く実用にならないので使えないということは、もう理解しています。このコードがどのような状況で動作しないのか、また、どのように変更すれば動作するようになるのか、おわかりになりますか?P.s.「MA(1)で探す-そうすれば、バー1のMAとバー0のMAが、あなたが望むレベルを超える指標として役立つでしょう。"よくわからないから、もっと資料を勉強してからにしよう "と先延ばしにできる


 
maxon777:

返信が遅くなり申し訳ございません。ただのモヤモヤで済んでよかったです、慌てちゃいました。そして、私の質問ですが、価格に達したときに通常の注文を開き、この価格を超えたら二度と開かないようにするコードを書くことが出来ました。でも、私はこの方法でやりました。
double b = 5;
int start()
{
ダブルビッド=Bid;
if (bid==0.7777 && b==5)
{
b=b+1です。
OrderSend(Symbol(), OP_BUY, 0.1, Ask, 0,0,0);
}

を返します。

これは「幼稚園」方式で、ニュアンスが違いすぎて全く実用にならないので使えないということは、もう理解しています。このコードがどのような状況で動作しないのか、また、どのように変更すれば動作するようになるのか、おわかりになりますか?P.s.「MA(1)で探す-そうすれば、バー1のMAとバー0のMAが、必要なレベルを超える指標として機能することになります。「ということで、とりあえず、この件に関しては、もう少し勉強してからにします。



double型の2つの数値が等しいかどうかの比較、これは良い操作ではありません。

NormalizeDouble(A - B , 5)==0 みたいな感じでしょうか。

 

みなさん、こんばんは。

コードにバグが見当たりませんので、助けてください。

私は自分のペアで利益があったかどうかを判断する必要があり、もしそうなら、私は取引を継続せず、EAを閉じる必要があります。

は、保留中の注文を入れる。

問題は、まだ利益が出ていないのに、EAを実行するとすぐに削除される、つまりExpertRemove() が発動してしまうことです。

以下、いくつかのコードを紹介します。

void OnTick()

{

if (テイクプロフィット()>0)

{

ExpertRemove()。

}

if (テイクプロフィット()<=0)

{

ここでは、一時停止を設定します

}

}

//+------------------------------------------------------------------+

////////ここで利益確定したトレードがあったかどうか!!!!!!!!!!!?

int TakeProfit ()

{

int count = 0;

for(int i=OrdersHistoryTotal()-1; i>=0; i--)

{

if (オーダーセレクト (i,SELECT_BY_POS,MODE_HISTORY) == true && OrderMagicNumber() == Magic && OrderSymbol () == Symbol () && OrderProfit() > 0.0)

{

カウント++。

}

}

を返す(count)。




 
yaaarik777:

みなさん、こんばんは。

コードにバグが見当たりませんので、助けてください。

私は自分のペアで利益があったかどうかを判断する必要があり、もしそうなら、私は取引を継続せず、EAを閉じる必要があります。

は、保留中の注文を入れる。

問題は、まだ利益が出ていないのに、EAを実行するとすぐに削除される、つまりExpertRemove()が発動してしまうことです。

以下はコードの一部です。

////////があったかどうかを調べる。利益確定で終了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

int TakeProfit ()

{

int count = 0;

for(int i=OrdersHistoryTotal()-1; i>=0; i--)

{

if (オーダーセレクト (i,SELECT_BY_POS,MODE_HISTORY) == true && OrderMagicNumber() == Magic && OrderSymbol () == Symbol () && OrderProfit() > 0.0)

{

カウント++。

}

}

を返す(カウント)。

このコードで何を求めているのでしょうか?

これは、正確にクローズしたポジションの 利益ではなく、履歴全体の利益を見るもので、履歴全体がプラスであれば、どんな場合でもOrderProfit()>0が得られます

 
Vitaly Muzichenko:

このコードで何を求めているのでしょうか?

これは、特定のクローズドポジションではなく、履歴全体の利益を探し、履歴全体が正であれば、どのシナリオでもOrderProfit()>0を出力します。


全歴史ではなく、アドバイザーの仕事の瞬間からクローズドポジションで検索できるようにするにはどうしたらいいでしょうか。

理解できない。

理解できない。

 
yaaarik777:


EA全体ではなく、EAが動作した時点から閉じたものを検索するようにするにはどうすればよいですか?

理解できない。

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

EA起動時以降に決済された最後のポジション、またはこの日に決済された最後のポジションを探し、その利益を見る:OrderProfit()+OrderComission()+OrderSwap()です。
 
yaaarik777:


EA全体ではなく、EAが動作した時点から閉じたものを検索するようにするにはどうしたらいいですか?

理解できない。

よろしくお願いします。


EAが動作していることをどのように判断しているのですか?

ここで、私からの提案です。

double TakeProfit ()
{
 datetime момент работы советника=0;
 double p=0;
  for(int i=OrdersHistoryTotal()-1; i>=0; i--){
    if (OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)){
       if (OrderMagicNumber() == Magic){
          if(OrderSymbol () == Symbol ()){
            if(момент работы советника<OrderCloseTime()){
               p+=OrderProfit()+OrderCommission()+OrderSwap();
            }
          }
        }
      }
    }
 return(p);
}
   
 
Artyom Trishkin:
EA起動時以降に決済された最後のポジション、またはこの日に決済された最後のポジションを探し、その利益を見る:OrderProfit()+OrderComission()+OrderSwap()です。


なぜEAの開始時間より後のクローズドポジションをすべて検索する必要があるのでしょうか?

EA開始前ではなく、開始時から検索してほしい。

 
yaaarik777:


なぜEAの開始時間より後にするのですか? すでにすべてのクローズドポジションを検索しています。

EA開始前ではなく、EA開始時から検索する必要があります。


考えてみれば、「最初からそれ以降」というのは、EAの開始時刻の後なんですよね ;)

インターオーラルオルガンを使うことを怠ってはいけない。

 

こんにちは。

ファイルからのデータをヒストグラムで表示したいのですが、どうすればよいですか?

ファイル "file.txt "では、日付は数字に対応する。

ファイルからデータを受け取り、プリントアウトしています。