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

 
EA starts 
---> Does nothing till there is 0 or 1 order 
----> Makes a 'call open sound' when 2nd order gets triggered 
----> Closes both orders at X amount of pure profit [after considering spread] and makes a 'call close sound' ]

of course, call open and call close sound files can be any small wave files.. easily available on mt4 itself. .. 
I think these things can be achieved in the above EA that I had posted by changing a few things !
うわー......あなたが望むものは、基本的にかなり簡単にコーディングできます。
 
deysmacro:
わぁ、あなたが望んでいることは、基本的にとても簡単なコードです。


案内してもらえますか?私はすでにウェブからこれを持っています

//+------------------------------------------------------------------+
//|                    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()
{
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);
}

今、私はコーダーではないことを非常に明確にしましたが、私はいくつかの行が必要だと思う "int start() "それは実行された [非保留]注文の数をカウントし、それらが2である場合にのみ次のコードに進み、残りのコードを実行します if (AccountProfit() >= My_Money_Profit_Target)... etc。

という感じでしょうか? このような行はMQLでどのように言うのですか?

int start()
{
 {
   if (Ordertotal()<=1)  ------>   See , something here which says only execute lower code if total executed orders are two else dont go to lower code.. I know that syntax is totally busted, trying to push the concept                                                                                                             
                                   as a weak non coder mind ;( .. so till total open orders are less than or equal to 1 means not 2, the code below that line wont come into play !         

      if (AccountProfit()>= My_Money_Profit_Target)
   {
    for(i=OrdersTotal()-1;i>=0;i--)
       {
       OrderSelect(i, SELECT_BY_POS);
 
thrdel:

はいdeVries

しかし、私は本当にあなたの答えに多くの助けを参照してくださいので....。

このコードは、うるさい顧客に売るための商用EAではないことを理解していますね? 私たちは何かを解決しようとしているのであって、あなたが手助けをしたくないのなら、少なくとも放っておくべきです。

時間軸を何度か変えれば......え?スリッページが3000000になる?私のMT4にはないようです。信じられないなら、自分でテストしてみろ。

私のテストでは、時間枠を変更すると、EAはdeinit/initサイクルを通過し、OnInitに記載されたコードがあるので、Slippageは毎回30ポイントになるそうです。

誰でもわかるように、時間枠を変えてもSlippageが100万になることはないのです、もしそれがあなたの言いたいことなら。

そして、これは偽の画像ではなく、本物の画像です。

それが役立つことを願っています。


これは失敗です・・・・。

多くのトレードで、prcは適切な価格ではありません。

それについて何か言うことはありますか....

OnInit()とOnDeinit()への二重呼び出しを 読んでください。

新しいバージョンで問題があります

(ダブルOnInit()問題は、ビルド628で修正されているように見えるが、まだこのバージョンではありません)。

 
deVries:

これは失敗です・・・・。

多くのトレードでは、価格は適切ではありません。

それについて何か言うことはありますか?

あなた方二人はウサギの穴に深く入り込んで、私の頭の上を鳥が飛び交うようなことを議論しているのですね。xD ... 私が追加したダサいコードラインを見てもらえますか =D

 
tatyawinchu:

あなた方はウサギの穴に深く入り込み、私の頭の上を鳥が飛び交うようなことを議論しているのですね。xD ...私が追加した、あのいい加減なコードラインを見てもらえますか =D


アスクとビッドはチャートシンボルの価格であり、他のシンボルで取引された場合、クロージングプライスは間違っている。

       if(result == false)
          {
            Sleep(0);
          }  

これはどのような効果があるのでしょうか?

それは失敗しているのでしょうか? OrderTypeは保留中の取引ですか?

それとも決済に失敗しているのでしょうか?

その場合、最後のエラー GetLastError()を取得する必要があり、その理由を知ることができます。

 
tatyawinchu:

EAが起動 ----> 0または1の注文があるまで何もしない ----> 2番目の注文がトリガーされると「コールオープン音」を出す ----> 純利益X金額(スプレッド考慮後)で両方の注文を閉じ、「コールクローズ音」を出す ]。

もちろん、コールオープンとコールクローズのサウンドファイルは、どんな小さな波形のファイルでも構いません...mt4自体で簡単に入手できます。これらのことは、私が投稿した上記のEAでも、いくつかの点を変更することで実現できると思います! へへへ、助けてくださいplz =D

tatyawinchu さん、こんにちは。

投稿したEAが何をするものなのか、よく理解されていないようですね。このEAがあなたの目的に合うか合わないかを判断するために、ステップバイステップで説明します。

口座に1万ドルあって、それを全部リスクにさらすなら、StopLossLimitを1万ドルに設定すればいいのです。

あなたの判断です。

さて、コードに戻ると、1,2,3...のように簡単です。

1.OnTick関数(毎ティックごとに実行される部分)のコードを読むと、最初に行うことがわかります。CountMyOrdersです。おわかりいただけたでしょうか。次に、myOrders <1であれば、まだ注文がないことを意味し、口座の資本を チェックし、それを記憶し、それを実行します。

他には何もしない。次のティックで、まだ注文がなければ、待つことに戻る。EAとしては、かなり退屈ではないでしょうか?

2.注文が入ると、myOrders<1が真でなくなるので、次のティックで次の行にジャンプし、マーケットにある注文の利益を計算する。

3.次に、すべての注文の利益の合計と目標の利益を比較する。

簡単でしょう?もし利益が目標に達したら、次の行で:ExitAll .そして、スクリーンにアラート(音付き)が表示され、注文が目標に到達したことを知らせてくれるんだ。

悪くないでしょ?

そして、言い忘れたが、もし市場が不利になり、資本の損失が設定したレベルに達した場合、残っている資本を保護するために市場から退場させることができるのだ。

それが、私があなたにできる最善の手助けです。

それ以上のことが必要なら、これよりもっとカスタムなコードを書く人たちの仕事だろう。

お役に立てれば幸いです。

乾杯

 
thrdel:

tatyawinchu さん、こんにちは。

掲載されているEAが何をするものなのか、よく理解されていないようですね。一歩ずつ説明しますので、ご自分の目的に合うか合わないかを判断してください。

口座に1万ドルあって、それを全部リスクにさらすなら、StopLossLimitを1万ドルに設定すればいいのです。

あなたの判断です。

さて、コードに戻ると、1,2,3...のように簡単です。

1.OnTick関数(毎ティックごとに実行される部分)のコードを読むと、最初に行うことがわかります。CountMyOrdersです。おわかりいただけたでしょうか。次に、myOrders <1であれば、まだ注文がないことを意味し、口座の資本をチェックし、それを記憶し、それを実行します。

他には何もしない。次のティックで、まだ注文がなければ、待つことに戻る。EAとしては、かなり退屈ではないでしょうか?

2.注文が入ると、myOrders<1が真でなくなるので、次のティックで次の行にジャンプし、マーケットにある注文の利益を計算する。

3.次に、すべての注文の利益の合計と目標の利益を比較する。

簡単でしょう?もし利益が目標に達したら、次の行で:ExitAll .そして、スクリーンにアラート(音付き)が表示され、注文が目標に到達したことを知らせてくれるんだ。

悪くないでしょ?

そして、言い忘れたが、もし市場が不利になり、資本の損失が設定したレベルに達した場合、残っている資本を保護するために市場から退場させることができるのだ。

それが、私があなたにできる最善の助けです。

それ以上のことが必要なら、これよりもっとカスタムなコードを書く人たちの仕事だろう。

お役に立てれば幸いです。

乾杯


どうやら私たちは離れ離れになってしまったようです。

私の正確な要件は次のとおりです。

ステップ1 EAが起動します。

ステップ2 EAは、現在の口座の 利益をチェックし、そこから計算するための開始点を知ることができます。

ステップ3 EAは実行中のオープンオーダー[保留中ではない]をチェックします。

ステップ4 実行中の注文がない場合、または実行中の注文が1つしかない場合、EAは何もしません。

ステップ5 2つ目の注文が発生するとEAは音を出します。 この2つ目の注文は他のペアになります。

Step 6 両方の注文をスプリードを考慮した上でXの利益で決済し、音を出す。

SLやTPを設定する必要はない。

できれば、2つ以上の注文で動作することが望ましいが、難しければ必要ない。

[しかし、論理的には、私はそれが難しいことはありません、むしろ非常に簡単に感じる、彼らは1以上であれば、EAはすべてのオープン-オーダーを閉じるためにアクティブになるので、それは自動的に2以上!だからそれはすでにEAによってカバーされているかもしれません;間違った場合は私を修正!]を参照してください。

 
deysmacro:
うわー......あなたが望むものは、基本的にかなり簡単にコーディングできます。

君は面白いね。微妙におかしいけど。
 
thrdel:

面白いね。微妙におかしいけど。

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

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

どのようにEAに特定のケースでノッティングを行うように指示するのですか?

例えば次のようにします。

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+


int start() 
{
if (OrdersTotal()=>2)                                     // Can this work? Can a function be directly called like this?
} 
{
 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)
Ok, cant seem to get out of this box yet ! hehe need to know forum stuff more ! but, as you can see above, if that "if (OrdersTotal()=>2)" is valid, it would directly solve my problems .. because the rest of
the stuff would be executed only if the total running market orders are 2 ! =D ..  and some forum guru please release this text from this src prison box ! ;)
 
しかし、あなたは覚えておく必要があります。EAは実行中の取引を終了させるだけです。自分でトレードを開始する必要があります。