[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 462

 
Roman.:

週末に出かける前の金曜日は普通かもしれませんが...。まだ神様のお墨付きのパーセンテージがあるんですね。

全ては取引契約書に書かれているはずなのですが...。

先生のスクリプトは見ていませんが、例えばアルパリはニュース(週末前)になるとスプレッドが広がります。



そこで、私の証券会社と口座に関する可能な限りのデータを使ってEAを書くことにします。どんな動きでも、すぐにアラートが表示されます。

また、証券会社で発注できる限度数が 見つからないのですが、単純に1000件の保留注文を出して、限度数が見つかったら自動的に削除すればいいのでしょうか?

 
rosomah:


1.私は、証券会社と口座に関するすべての可能なデータを入力するアドバイザを書くつもりです。どんな動きでも、すぐにアラートが表示されます。

証券会社で注文の限度数が見つからないのですが、単純に1000件の未決済注文をチャージして、限度数が見つかったら自動的に削除すればいいのでしょうか?

1) アラートは役に立ちません。これらの環境パラメータは、取引条件を実行するコードセクションに入力する必要があり、これらのパラメータのいずれかがその最大許容値(あなたが設定)を超えた場合、適切な判断(例えば、取引を拒否する... -取引操作を実行する)をする必要があります。

2.いいえ、できません、IMHO - 規則と取引条件をお読みください。そうでない場合は、技術サポートに電話し、取引口座の種類に関するすべてのそのような質問のためのローカルシェフに電話します。

 

こんにちは。

このコードで一日中作業しているのですが、エラー131が 出ます。このコードは、すべての成行注文を調べ、同じサイクルの各ターンで、選択した注文のシンボルの未決済注文の数量を再読込する必要があります。一つのシンボルの買いポジションと売りポジションの数量が異なる場合、残りの数量に対してロック注文が発注されます。

     int i;
     int ii;
     string SMB="";
     double Price=0;
     double PriceAsk=0;
     double PriceBid=0;
     double SchBuyLotsSMB=0;
     double SchSellLotsSMB=0;
     double MarketLotSMB=0;
     for (i=OrdersTotal()-1;i>=0;i--)
      {
       if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
         Alert ("Ошибка ",GetLastError()," выбора ордера!");
         Print ("Ошибка ",GetLastError()," выбора ордера!");
        }
       else
        {
         SMB=OrderSymbol();
         PriceAsk=MarketInfo(SMB,MODE_ASK);
         PriceBid=MarketInfo(SMB,MODE_BID);
         for (ii=OrdersTotal()-1;ii>=0;ii--)
          {
           if (!OrderSelect(ii, SELECT_BY_POS, MODE_TRADES))
            {
             Alert ("Ошибка ",GetLastError()," выбора ордера!");
             Print ("Ошибка ",GetLastError()," выбора ордера!");
            }
           else
            {
             if(OrderSymbol()==SMB)
              {
               if(OrderType()==OP_BUY)
                {
                 SchBuyLotsSMB=SchBuyLotsSMB+OrderLots();
                }
               if(OrderType()==OP_SELL)
                {
                 SchSellLotsSMB=SchSellLotsSMB+OrderLots();
                }
              }
            }
          }
         MarketLotSMB=SchBuyLotsSMB-SchSellLotsSMB;
         if (MarketLotSMB<0)
          {
           MarketLotSMB=MathAbs(MarketLotSMB);
           Price=PriceAsk;
           OPENORDER ("Buy",SMB,MarketLotSMB,Price);
          }
         else
          {
           if (MarketLotSMB>0)
           Price=PriceBid;
           OPENORDER ("Sell",SMB,MarketLotSMB,Price);
          }            
        }
       SMB="";
       Price=0;
       PriceAsk=0;
       PriceBid=0;
       SchBuyLotsSMB=0;
       SchSellLotsSMB=0;
       MarketLotSMB=0;        
      }

原因究明をお願いします。131 - ボリュームファインディングエラーと関係があると読みました。しかし、私はそれを見ていない。

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

 
TarasBY:
あなたは注文ループで奇妙なループを使用している、しかし、これは著者の権利である、その後、2番目のループの前に合計ロットの読み取り(SchBuyLotsSMBとSchSellLotsSMB)をゼロにします。
だから、ゼロにするんです。
 
nemo811:

こんにちは。

このコードで一日中作業しているのですが、エラー131が出ます。このコードは、すべての成行注文を調べ、同じサイクルの各ターンで、選択した注文のシンボルの未決済注文の数量を再読込する必要があります。一つのシンボルの買いポジションと売りポジションの数量が異なる場合、残りの数量に対してロック注文が発注されます。

原因究明をお願いします。131 - ボリュームファインディングエラーと関係があると読みました。しかし、私はそれを見ていない。

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


どこに滑りがあるのか?そのせいかもしれませんね!
 
ちなみに、1つのシンボルに対して注文を出し、EA自体をそのシンボルに対して実行すれば、コードは正しく動作します。2つ以上のペアで注文が開いている場合、または注文がないシンボルでEAが動作している場合、エラーが発生します。
 
borilunad:

どこに滑りがあるのか?そのせいかもしれませんね!

意味は?

Sleep (1000);

?

試してみたが、うまくいかない。

 
nemo811:
そうやってリセットするんです。
すぐには気がつかなかった。オプションとして(私なら義務付ける)、トークン関数に渡されるロット値の正規化を行う。
 
TarasBY:
すぐには気がつかなかった。オプションとして(私なら必ずそうする)、トークン関数に渡されるロット値の正規化を行うようにする。
そんな思いがありました。これから試してみます。ありがとうございます。
 
nemo811:

意味は?

?

試してみたが、うまくいかない。


スリッページ、初値 後、最低でも30で5!?