オープンプロジェクト - テスタ・オプティマイザを自社開発 - ページ 3

 
ソースコードをここに掲載しました -http://forexsystems.ru/phpBB/viewtopic.php?p=4379#4379
削除せざるを得なかったコメントを見ることができます。
TradeOrdersArray、ClosedOrdersArray 配列の目的については、そちらに記述しています。そして、もう少し。
 
取引関数OrderSendをオーバーライドした。
CorrectPrice()関数とDrawArrowOnChart()関数は未定義です。
ここに掲載しました -http://forexsystems.ru/phpBB/viewtopic.php?p=4380#4380

init()ブロックからヘッダーにすべての変数をドラッグしなければならなかった - さもなければ変数は見えない。私の最初のミスです。
もうひとつは、関数内のパラメータのデフォルト値をNULLに設定しようとすると、コンパイラが悪態をつくことです。
第三に、コード中に未定義/未定義関数(CorrectPrice()、DrawArrowOnChart() )があってもコンパイラがクラッシュしない。
おそらくそれはNULLにつまずき、それ以上文句を言うことはないでしょう。
関数の定義は愚かなもので、辞書からコピーしたものなので、もし開発者が間違った宣言をしていると私を責めるなら・・・。

  //+------------------------------------------------------------------+
//| Redefine OrderSend() function                       |
//+------------------------------------------------------------------+


int fut_OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit,
 string comment=[b]NULL[/b],int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
  {
  if (CorrectPrice(symbol,cmd,price,myCurrentTime))
      {
      TradeOrdersArray[myOrdersTotal,0]= symbol;
      TradeOrdersArray[myOrdersTotal,1]=pool_pos;
      TradeOrdersArray[myOrdersTotal,2]=myOrderTicket+1;
      TradeOrdersArray[myOrdersTotal,3]=cmd;
      TradeOrdersArray[myOrdersTotal,4]=volume;
      TradeOrdersArray[myOrdersTotal,5]=price;
      TradeOrdersArray[myOrdersTotal,6]=slippage;
      TradeOrdersArray[myOrdersTotal,7]=stoploss;
      TradeOrdersArray[myOrdersTotal,8]=stoploss;
      TradeOrdersArray[myOrdersTotal,9]=comment;
      TradeOrdersArray[myOrdersTotal,10]=magic;
      TradeOrdersArray[myOrdersTotal,11]=myCurrentTime;
      DrawArrowOnChart(symbol,myCurrentTime,price,arrow_color);
      myOrderTicket++;
      myOrdersTotal++;
      pool_pos++;
      return(myOrderTicket);
      }
      else return(-1);
  }



明日、OrderClose()を再定義してみます。そこでテストのアイデアを説明しやすくなると思います。
PS すでに2名の方がダウンロードされているようで、希望が持てます。

 
削除せざるを得なかったコメントを見ることができます。

Roshさん、このフォーラムでロシア語のテキストを挿入する方法がわかりました(自分で考えないといけないんですけどね :)。
エディターでコードをコピーするときは、ロシア語にしてください。そして、それぞれフォーラムに貼り付ける際も同様です。
そして、すべてのコメントは保存されます ;)
 
レナット、スラバ...
ここで、empty演算 子についての議論に良い例を挙げます。
暗黙の型変換は、括弧の後の"; "よりもずっと悪く、危険です。
この場合、明示的なエラーは発生しますが、コンパイラは警告すら発生させません。

ロッシュ
と表示され、再びページが消えました。
 
もうひと頑張り。

int fut_OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, 
double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
  {
  if (CorrectPrice(symbol,cmd,price,myCurrentTime))
      {
      TradeOrdersArray[myOrdersTotal,0]= symbol;// записали иструмент
      TradeOrdersArray[myOrdersTotal,1]=pool_pos;// записали номер в списке терминала
      TradeOrdersArray[myOrdersTotal,2]=myOrderTicket+1;// записали номер тикета у брокера
      TradeOrdersArray[myOrdersTotal,3]=cmd;// записали тип ордера
      TradeOrdersArray[myOrdersTotal,4]=volume;// записали размер ордера
      TradeOrdersArray[myOrdersTotal,5]=price;// записали цену открытия
      TradeOrdersArray[myOrdersTotal,6]=slippage;// записали проскальзывание в пунктах
      TradeOrdersArray[myOrdersTotal,7]=stoploss;// записали stoploss
      TradeOrdersArray[myOrdersTotal,8]=stoploss;// записали takeprofit
      TradeOrdersArray[myOrdersTotal,9]=comment;// записали комментарии
      TradeOrdersArray[myOrdersTotal,10]=magic;// записали MagicNumber
      TradeOrdersArray[myOrdersTotal,11]=myCurrentTime;// записали дату выставления/открытия ордера
      DrawArrowOnChart(symbol,myCurrentTime,price,arrow_color);
      myOrderTicket++;
      myOrdersTotal++;
      pool_pos++;
      return(myOrderTicket);
      }
      else return(-1);
  }
//+------------------------------------------------------------------+
 
本文中に重大な間違いがあります。
 
Makさん、ありがとうございます。簡潔は才能の姉妹である。
 
ロッシュ
ただ、レナトには自分で見て、エラーを発見してほしかったんです。
でも、ここを見ていないのか、私の投稿をバカにしているようです。
(引用 - 「くだらない質問には答えない」 - :))

MQL構文(および/またはコンパイラ)のデメリットというテーマで書いています。
コンパイラは、このエラーについて警告することはできても、対応することはできません。
私なら単純に、そのようなエラーを言語で禁止する(暗黙の型変換)。

具体的に言うと
TradeOrdersArray 配列はdouble 型 である。
何カ所か、文字列の値を割り当てていますね。
例えば、こんな感じです。
TradeOrdersArray[myOrdersTotal,0]= symbol;


コンパイラはそれを全部食べてしまうし、テスターだって動くけど、あなたが望んだようには動かない。
ましてや、1ヶ月前のものであれば、そのようなミスを探すのは大変です。
で、今日、プログラムに数行追加して初めて表示されました。

(Plz., fix the script - page is gone, it's not convenient to look.).

 
では、異なる型のデータを格納するための配列はどのように定義すればよいのでしょうか。
この宣言を紹介します。
文字列 comment=NULL
の場合、コンパイラはエラーを発生します。
しかし、私はただパターン別に辞書からコピーしているだけです。
 
異なる型のデータを格納するための配列を定義するにはどうすればよいですか?

できないのでは?
2種類のアレイのみ。