スプレッドについて教えてください。 - ページ 4

 
deysmacro:
しかし、あなたは覚えておく必要があります。EAは実行中の取引を終了させるだけです。自分でトレードを開始する必要があります。

100%、問題なし、むしろそれは私が達成しようとしているものと全く同じです。ゆっくりと私はそれに向かって取得している...このプログラミングのことは学校で教えられている必要があります...へぇあまりにも悪い私は80年代から、私はそれを通過しなければならないと思ったことはありませんが、より私はヘルプファイルを読んで、私はそれがますます興味をそそる見つける...も、このフォーラムでは、あなたのような人のおかげで、ヘルプの負荷があります。
 
tatyawinchu:

IFループを追加し、ループを開始する以下のコードの残りの部分を貼り付けることができればどうなりますか?

IF条件は、OrdersTotalが⇒2であることをチェックする必要があり、その制御は、スプレッド後のX利益ですべてのオープンオーダーを閉じるために渡されるのですか?



私はあなたが本当に"IF条件は、コントロールがスプレッド後にX利益ですべてのオープンオーダーを閉じるために渡されるように⇒2であることがOrdersTotalをチェック すべきである" の意味がよく分からない。

が、やってみても本当に悪いことは起きないと思います。もし、うまくいかなかったとしても、失うものは何もありません。少なくとも、あなたは試しました。

 
tatyawinchu:

100%、問題ありません。むしろ、それはまさに私が達成しようとしているものです...私はEAにどんな取引でも開いてほしくない、それは私の仕事です...私はちょうど2つ以上の注文がX利益で開いていると、それを閉じるようにしたい、とスプレッドを考慮しなければなりません!ゆっくりと私はそれに向かって取得している...このプログラミングのことは学校で教えられている必要があります...へぇあまりにも悪い私は80年代から、私はそれを通過しなければならないと思ったことはありませんが、より私はヘルプファイルを読んで、私はそれがますます興味をそそる見つける...も、このフォーラムでは、あなたのような人のおかげで、ヘルプの負荷があります。

ただ、totalprofitにspreadが含まれています。
 
thrdel:


IF条件はOrdersTotalが=> 2であることを確認し、スプレッド後のX利益ですべてのオープンオーダーを閉じるように制御する必要があります" の本当の意味はわかりません。

ということですが、やってみても特に悪いことは起きないと思います。もし、うまくいかなかったとしても、失うものは何もありません。少なくとも、あなたは試しました。


このような場合、「IF条件がOrdersTotal => 2であることを確認し、スプレッド後のX利益ですべてのオープンオーダーをクローズするよう制御 する必要がある」というのはどういう意味 なのでしょうか?

ふむふむ、つまり私が言いたいのは

IF ... 未決済注文の合計数が2以上である ... その時だけ先に進み、コードの残りの部分に従います...

IF 未決済注文の合計数... [ OrdersTotal() ?] ...は2未満です... それは1または0を意味し、その後何もしません...

さて、ここで問題なのは、mql4のヘルプファイルによると、OrdersTotal()は成行と未決済のすべての注文をカウントするそうです。私は、未決済ではなく成行注文だけを取得できる関数を探して います。

この説明はわかりやすいですか?

あなたが私に与えている時間のためにtx。

 

THRDELは 、まず試してみて、どうなるか見てほしいということですが、私は何が起こりそうかを確信しています。

 
deysmacro:

THRDELは 、まず試してみて、どうなるかを確認することを望んでいます。



はい、ヘルプファイルを見て、オープンオーダーだけを出す適切な機能を探して います。
 
完成したら、コードをお見せください。
 
deysmacro:
あなたがそれを完了することができたときに私達にあなたのコードを見せてください、そして、私達は私達ができるならば、あなたを助けます。

了解です。ありがとうございます。

..

そして、私はオープントレードのみを返す関数を 見つけることができませんでした。 これは大丈夫です、私は以下のようにIFループを追加しました。

//+------------------------------------------------------------------+
//|                    CloseTrades_After_Account_Profit_Reached.mq4  |
//|                                     Copyright © 2007, Tradinator |
//|                                          tradinator.fx@gmail.com |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2007, Tradinator"
#property link      "tradinator.fx@gmail.com"


                                       
extern double My_Money_Profit_Target=100;     //The amount of money profit at which you want to close ALL open trades.
extern string Profit_Target= "Enter above To Close all OPEN trades when amount of profit is Reached in Account and not per OPEN trade! ";
                                          
int Slippage=5;
int i;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+


int start()

//+------------------------------------------------------------------+
//| This is just the single line of code that I have added
//+------------------------------------------------------------------+
{ 
 if (OrdersTotal()>=2)

 {
   if (AccountProfit()>= My_Money_Profit_Target)
   {
    for(i=OrdersTotal()-1;i>=0;i--)
       {
       OrderSelect(i, SELECT_BY_POS);
       int type   = OrderType();
               
       bool result = false;
              
       switch(type)
          {
          //Close opened long positions
          case OP_BUY  : result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),Slippage,Pink);
                         break;
               
          //Close opened short positions
          case OP_SELL : result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),Slippage,Pink);
                          
          }
          
       if(result == false)
          {
            Sleep(0);
          }  
       }
      Print ("Account Profit Reached. All Open Trades Have Been Closed");
      return(0);
   }  
   
   Comment("Balance: ",AccountBalance(),", Account Equity: ",AccountEquity(),", Account Profit: ",AccountProfit(),
           "\nMy Account Profit Target: ",My_Money_Profit_Target);
   
  return(0);
   }
 }

私は、もしOrdersTotal()>=2 行く開始時にIF条件を追加しました... [ コメントと上記のコードで強調表示 ]

さて、最初の試みで、私は次のようにそれをしようとしたように{}を閉じる問題があった。

{ 
 if (OrdersTotal()>=2)
}

 {
   if (AccountProfit()>= My_Money_Profit_Target)
   {
    for(i=OrdersTotal()-1;i>=0;i--)
       { .. etc etc 
     

だから基本的に初めてのコーダーとして、私はそのif条件をチェックするために最初に出そうとした...コンパイルされませんでした...。

そこで、{}の中に条件を入れて閉じてみたところ、2つの警告だけでエラーは出ませんでした。

OrderSelect'の戻り値をチェックする必要があります Testcode 1.mq4 56 8

全てのコントロールパスが値を返すわけではない Testcode 1.mq4 86 2

ということで、コンパイルはできているのですが、論理的に正しいのでしょうか?

[また、著作権情報を削除していない、私はちょうど行を追加している、彼の詳細を削除すると、私の一部で完全に不公平になる...それに関するルールは何ですか?]

 
tatyawinchu:

はい、ヘルプファイルを見て、オープンオーダーだけを出す適切な機能を探しました。


本当に申し訳ないのですが、前にも言ったように、私は説明するのがあまり得意ではありません。私はあなたがオープン買いまたは売り注文のみを カウントする関数を見つけたいことを理解し、私はあなたに私のコードを見て尋ねた、私は私の能力の範囲内であなたにそれを説明し、私は期待していたほど良くなかった。

このコードについて私が述べた最初のステップを覚えていますか?

それはCountMyOrdersです。さて、私が尋ねたように、あなたがそのコードを見てみると、次のようになります。

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CountMyOrders()
  {
   myOrders=0;
   for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
     {
      if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==false)
         Print("Failed to select order, error : "+ErrorDescription(GetLastError()));
      //skip orders placed by other EA's
      if(OrderMagicNumber()>0)continue;
      if(OrderType()==OP_BUY || OrderType()==OP_SELL)
        {
         myOrders++;
        }
     }
   return(myOrders);
  }

こう書いてあります。

if(OrderType()==OP_BUY || OrderType()==OP_SELL)

OP_BUYとOP_SELLが何を意味するか知っておく必要があります。

保留中の注文はカウントされず、買いストップも売りストップもなく、買いリミットも売りリミットもなく、ただ買いオープンと売りオープンのみです。

このコードとその機能について、他にどう説明したらよいでしょうか。

あなたはドキュメントを検索し続け、それに精通することができますが、私はあなたが探している機能がそこにないことを伝えることができます。

私のEAでは、まだ注文がない場合は、待つように言っています。

if(myOrders<1)

2つの注文を待てということですね。私が言ったことに少し注意を払えば、あなたはおそらく、あなたがしなければならないことは:

if(myOrders<2)

Voilla。これで、2つの注文が揃うのを待ちます。保留なし、買いか売りかだけです

私はオープントレードを管理する方法を探しているかもしれないだけでなく、他の人に合うように一緒にコードを入れようとしたことを理解してくださいと、そこまで特定の目的のために設計されたカスタムではありません。

これは例として意図されており、あなたが良いと思うものを取り、残りを残し、それを改善し、変更し、あなたができる場合はそれから学び、それを使って実験してください。

ご理解いただけたでしょうか?

 
thrdel:


本当に申し訳ないのですが、先ほども言ったように、私は説明するのがあまり得意ではありません。私はあなたがオープン買いまたは売り注文のみをカウントする関数を見つけたいことを理解し、私はあなたに私のコードを見て尋ねた、私は私の能力の範囲内であなたにそれを説明し、私は期待していたほど良くなかった。

このコードについて私が述べた最初のステップを覚えていますか?

それはCountMyOrdersです。さて、私が尋ねたように、あなたがそのコードを見てみると、次のようになります。

こう書いてあります。

OP_BUYとOP_SELLが何を意味するか知っておく必要があります。

保留中の注文はカウントされず、買いストップも売りストップもなく、買いリミットも売りリミットもなく、ただ買いオープンと売りオープンのみです。

このコードとその機能について、他にどう説明したらよいでしょうか。

あなたはドキュメントを検索し続け、それに精通することができますが、私はあなたが探している機能がそこにないことを伝えることができます。

私のEAでは、まだ注文がない場合は、待つように言っています。

2つの注文を待てということですね。私が言ったことに少し注意を払えば、あなたはおそらく、あなたがしなければならないことは:

Voilla。これで、2つの注文が揃うのを待ちます。保留なし、買いか売りかだけです

私はオープントレードを管理する方法を探しているかもしれないだけでなく、他の人に合うように一緒にコードを入れようとしたことを理解してくださいと、そこまで特定の目的のために設計されたカスタムではありません。

これは例として意図されており、あなたが良いと思うものを取り、残りを残し、それを改善し、変更し、あなたができる場合はそれから学び、それを使って実験してください。

ご理解いただけたでしょうか?

私は初心者なのですが、あなたの説明は完璧です!ただ、今、私は一歩ずつ...ヘルプファイルを一字一句読んで、行き詰ったら助けを求めて いるので、消化するのは少し難しいです。むしろ、あなたのコードのおかげで、今私はヘルプファイルのFUNCTIONセクションを読んでいます!また、私が上に貼り付けたコードをあなたのほうでコンパイルして、そのIF条件のロジックに何か間違いがないかどうか見てもらえませんか?例えば、注文がないときにこのEAが実行され、最初の注文が出され、しばらくして他の注文が出された場合、そのIF条件のロジックは正しいでしょうか?また、このコードは一行修正するだけでほぼ間違いないと思います[また、これを仕事として投稿するという考えは捨てました...]、私にとってはこれが唯一のEAになるので、他のEAからの注文を省くかどうかスキャンするために複雑にする必要はありません、だから私は特に各注文にマジック番号を割り当てたりする必要はありません、今は私のIFの論理が正しいかどうかを調べるだけです ^^。