"ダミー "からの質問 - ページ 273

 
bagdarino:

例えば月20クレジットの場合、クレジットとは何か、そのコストは?

1クレジット=1ドル
 

ペアは数字にコード化される必要があります。MT4では、まず配列を初期化することで状況を打開しています。

string CurrName [35]={"","","","","","","","","","","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};

を実行し、そのペアを配列に通して数値に書き込む。

for(int i=0; i<=6; i++)
  {string letter = StringSubstr(Symb,i,1);
   for(int j=10; j<=35;j++)
    {if(letter == CurrName[j])
     {text1=StringConcatenate(text1, j);
      break;
      }}}

教えていただけると幸いです。 MT5では、配列を初期化 しようとするとすでにエラーメッセージが出るので、動作しません。

'Z' - 初期化子が多すぎる

残念ながら、今のところ私の知識にはギャップがあります。

この問題に対する可能な解決策を提案してください。もしかしたら、MT4でももっと早い方法があるかもしれませんので、教えていただければ幸いです。


Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Операции с массивами / ArrayInitialize - Документация по MQL5
 
Heroix:

ペアは数字にコード化される必要があります。MT4では、まず配列を初期化することで状況を打開しています。

で、そのペアを配列に通して数値に書き込んでいます。

.........

MT5では、配列を初期化 しようとするとすでにエラーメッセージが出るので使えません。

'Z' - 初期化子が多すぎる

ワプチェパ 10+26 = 36 となり、サイズ[35]の配列ができます。 文字'Z'が入らないのは、コンパイラが教えてくれているのです。

残念ながら、今のところ私の知識には ギャップがあります。

この問題に対する可能な解決策を提案してください。もしかしたら MT4でももっと早い方法があるかもしれませんので、教えて いただけると嬉しいです。

高速な方法について プログラミングは詩のようなものです。 文字以外の知識は必要ありません。 あとは創造力です。 問題があれば、解決策を考案するのです。

そして、良いプログラマーと悪いプログラマーは、よく覚えている参考書の厚さだけで違うとほざいて、私を侮辱している・・・ :) 助ける気も起きない・・・。

フィー!

 
MetaDriver:

ヴァプチェパ 10+26=36 で、サイズ[35]の配列ができます。 文字'Z'が通らないのは、コンパイラがそう教えてくれます。

高速な方法について プログラミングは詩のようなものです。 文字以外の知識は必要ありません。 あとは創造力です。 問題があれば、解決策を考案します。

そして、良いプログラマーと悪いプログラマーは、よく覚えている参考書の厚さだけで違うとほざいて、私を侮辱している・・・ :) 助ける気も起きない・・・。

フィー!

不思議なことに、なぜかMT4でコードが動きます。そこのループの中で、そうですね、j<=36がオリジナルで、これがここで「描かれた」35です。

ありがとうございます、確かに配列の値の宣言に問題がありました。私は100年に一度、比喩的にこの方法で配列を宣言しています...。は、あまり厳しく判断しないでください。

最後の行にあるのは、推測であり、それ以上のものではありません。ほぼ直筆:いろいろあって、どうしたらいいかわからなかった。

 
Heroix:

不思議なことに、なぜかMT4でコードが動きます。そこのループの中で、そうですね、j<=36がオリジナルで、これがここで「描かれた」35です。

ありがとうございます、確かに問題は配列の値宣言でした。私は100年に一度、比喩的にこの方法で配列を宣言しています...。は、あまり厳しく判断しないでください。

なるほど。

最後の行にあるのは、推測であり、それ以上のものではありません。ほぼ直筆:いろいろあって、どうしたらいいかわからなかった。

よし、よし、じゃあこうしよう...満月かぁ、最近流行ってますね。

;)

 
papaklass:

MCの立場がオンで変わったかどうかは誰にもわからない。

1.例外処理の導入 (try {} catch() {}) .強く反対」された。

いいえ

2.foreach演算子(){}の導入。

?まあ、それはちょっとナンセンスですね。何を頼んだらいいのかわからない。この演算子はコンテナ専用で、MQLには全く存在しない概念です。

配列だけは、通常のフォークで完璧に実装できます。

 
papaklass:

MCの立場がオンで変わったかどうかは誰にもわからない。

1.例外処理の導入 (try {} catch() {}) .強く反対」された。

2.foreach演算子() {}の導入 .

追記:なぜオペレーターが目立ったのかは不明?

の予約語があって、それが参照されるからハイライトされているのです。
 

働きすぎで...。

スクリプトの

#property script_show_inputs
//--- input parameters
input string   Symb0="EURUSD";
input double   Vol0=0.2;
input string   Symb1="GBPUSD";
input double   Vol1=0.3;
input string   Symb2="CADCHF";
input double   Vol2=0.4;

input bool     buy = true;

MqlTradeRequest TradeRequest[3];
MqlTradeResult  TradeResult[3];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
  if(buy)
  {
  _OrderSend(TradeRequest[0],TradeResult[0],Symb0,ORDER_TYPE_BUY,Vol0,0,0.0,0.0,"EURUSD",0);
  _OrderSend(TradeRequest[1],TradeResult[1],Symb1,ORDER_TYPE_BUY,Vol1,0,0.0,0.0,"GBPUSD",0);
  _OrderSend(TradeRequest[2],TradeResult[2],Symb2,ORDER_TYPE_BUY,Vol2,0,0.0,0.0,"CADCHF",0);
  Comment(PositionsTotal());
  }
  //Sleep(5000);
  else
  {
  
  _OrderSend(TradeRequest[0],TradeResult[0],Symb0,ORDER_TYPE_SELL,Vol0,0,0.0,0.0,"EURUSD",0);
  _OrderSend(TradeRequest[1],TradeResult[1],Symb1,ORDER_TYPE_SELL,Vol1,0,0.0,0.0,"GBPUSD",0);
  _OrderSend(TradeRequest[2],TradeResult[2],Symb2,ORDER_TYPE_SELL,Vol2,0,0.0,0.0,"CADCHF",0);
  }
  
  Sleep(1000);
  _CloseAllPositions();
  }
//+------------------------------------------------------------------+

void _OrderSend(MqlTradeRequest &tradeRequest,
                MqlTradeResult  &tradeResult,
                string          symbol,
                ENUM_ORDER_TYPE type,
                double          volume,
                ulong           deviation,
                double          sl,
                double          tp,
                string          comment,
                int             magic)
{
  MqlTick price; SymbolInfoTick(symbol, price);
  
  tradeRequest.action   = TRADE_ACTION_DEAL;
  tradeRequest.symbol   = symbol;
  tradeRequest.type     = type;
  tradeRequest.volume   = volume;
  
  if(type==ORDER_TYPE_BUY)
    tradeRequest.price    = price.ask;
  if(type==ORDER_TYPE_SELL)
    tradeRequest.price    = price.bid;

  tradeRequest.deviation= deviation;
  tradeRequest.sl       = sl;
  tradeRequest.tp       = tp;
  tradeRequest.comment  = comment;
  tradeRequest.magic    = magic;
  
  OrderSendAsync(tradeRequest,tradeResult);
}


void _CloseAllPositions()
{
  Print("пробую закрытся");
  MqlTradeRequest tradeRequest;
  MqlTradeResult  tradeResult;
  MqlTick price;
  
  if(PositionsTotal()>0)
  {
    
    string symb="";
    
    for(int i=0;i<PositionsTotal();i++)
    {
      symb=PositionGetSymbol(i);
      PositionSelect(symb);
      SymbolInfoTick(symb, price);
      
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
      {
        tradeRequest.type =ORDER_TYPE_SELL;
        tradeRequest.price=price.bid;
      }
      else
      {
        tradeRequest.type =ORDER_TYPE_BUY;
        tradeRequest.price=price.ask;
      }
        tradeRequest.action   =TRADE_ACTION_DEAL;
        tradeRequest.symbol   = symb;
        tradeRequest.volume   = PositionGetDouble(POSITION_VOLUME);
        tradeRequest.deviation= 0;
        tradeRequest.sl       = 0.0;
        tradeRequest.tp       = 0.0;
        tradeRequest.comment  = "";
        tradeRequest.magic    = 0;
        
        OrderSend(tradeRequest,tradeResult);
    }
  }
}

エラーが発生するのですが。

2013.08.23 10:28:54 Trades '1421016': failed instant sell 1.60 CADCHF at 0.87721 [Invalid request] [無効なリクエスト]です。
2013.08.23 10:28:54 Trades '1421016': failed instant sell 1.20 GBPUSD at 1.55836 [Invalid request] [無効なリクエスト].
2013.08.23 10:28:54 Trades '1421016': failed instant sell 0.80 EURUSD at 1.33455 [Invalid request] [無効なリクエスト].


何が問題なのか?

 

全部開いてるんだけど...。しかし、CADCHFをクローズすることはない。(サーバーはMetaQuotes Demo)

forループの方向を変更し、現在はすべてうまくいき、すべてが開き、すべてが閉じます。

 
i_logic:

全部開いてるんだけど...。しかし、CADCHFをクローズすることはない。(サーバー - MetaQuotes Demo)

forループの方向を変更し、現在はすべてうまくいき、すべてが開き、すべてが閉じます。

に変更しました。

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

だから、クロージャーも効かないんです。