int MagicNumber=001;
//---if (OrdersTotal()>0) // проверяем, есть ли ордера
{ for (int i=OrdersTotal()-1; i>=0; i--) // перебор ордеров
{ if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) // выбирается ордер среди открытых и отложенных ордеров
{ if (OrderSymbol()!=Symbol()) continue; // проверяем - ордер по текущему символу?if (OrderMagicNumber()!=MagicNumber) continue; // проверяем - ордер с нужным магиком?//---if (OrderType()==OP_BUY) // если это открытая позиция на покупку, то ...
{ // ... какие-то действияreturn(0);
}
//---elseif (OrderType()==OP_SELL) // если это открытая позиция на продажу, то ...
{ // ... какие-то действияreturn(0);
}
} } }
string_Symbol="AUDUSD";
int MagicNumber=555;
//---int Opened_pos=0;
if (OrdersTotal()>0)
{ for (i=OrdersTotal()-1; i>=0; i--)
{ if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{ if (OrderSymbol()==_Symbol)
{ if (OrderMagicNumber()==MagicNumber)
Opened_pos++;
} } } }
#import "StrAddress.dll"int GetStrAddress(string str);//на входе имя инициализированной строки, на выходе её адрес#import//объявляем:string s="something";
int address;
//пример использования:int start(){
address=GetStrAddress(s);
Print(" адрес s равен " s);
}
sss2019、今対応する時間はありません、すみません。
間違っている。正しくは、上記の通りです。
気が向いたらすぐに修正して、そこの投稿のコードを編集します。
質問です。文字列へのポインタを 取得するにはどうすればよいですか?MQL4の文字列は、私が理解した限りでは、C++のlpsz です。しかし、文字列のアドレス そのものはどうやって取得するのでしょうか?
もし、同じEAを異なるウィザードで動作させるアイデアがあれば、ロボットはロックが発生したときにこの状況を別々に処理し、他の注文に干渉しないようにする必要があります。例えば、ベイ(マジック001)で1つのポジションを持ちましたが、相場は我々に不利になり、取引を閉じる代わりにマジック001の売りで反対の取引が始まり、ロボットが状況を処理します。私は再びベイをオープンしたいのですが、マジック(002)で、トレンドが修正されない場合に、マジック(002)の反対の売り注文が再び開くといったように。 何か、取引を別のマジックで層として動作させるには? またはそれを実装するには? 。
必要なシンボルとマジックによる未決済注文と保留注文の カウンターの例
なぜかテスト中に端末が不具合を起こしてしまいました。今、電源を入れると、150mbほどのメモリを使い始めてハングアップしてしまう。再インストールしようと思ったが、その前にすべてのファイルを移動した。フォルダを開いてみると、作成したファイルがすべてあるわけではないことがわかった。残りはどこだ?
なぜかテスト中に端末が不具合を起こしてしまいました。今、電源を入れると、150mbほどのメモリを使い始めてハングアップしてしまう。再インストールしようと思ったが、その前にすべてのファイルを移動した。フォルダを開いてみると、作成したファイルがすべてあるわけではないことがわかった。他のメンバーは?
sss2019、今対応する時間はありません、すみません。
気が向いたらすぐに修正して、そこの投稿のコードを編集します。
質問です。文字列へのポインタを取得するにはどうすればよいですか?MQL4の文字列は、私が理解した限りでは、C++のlpsz です。しかし、文字列自体のアドレスは どのように取得すればよいのでしょうか?
左のスクリーンショットは、4ではなくMQL5です。
いいえ、4枚目です。ただ、4番目のファイルをクリックすると、なぜか5番目まで開いてしまうのです
MetaEditor for 5を開き、左のウィンドウで「ナビゲータ」→フォルダ上でマウスの右クリック→「フォルダを開く」で、フォルダの中から検索してみてください。
MQL4では方法がありません。DLLに文字列を渡して、そのアドレスをINTで返すことができます。 。
//MQL4
他の人が同じように悩まないように、zipで圧縮したプロジェクト 全体を添付しています。ソース付きで、他の人にもウイルスでないことがわかるように。VC++ 6.0でコンパイルされたものと、ゴミのようなものを確認する時間がありませんでした。StrAddress.dllはDebugフォルダーにあります。
MetaEditor for 5を開き、左ウィンドウの「ナビゲータ」→フォルダ上でマウス右クリック→「フォルダを開く」で、フォルダの中から検索してみてください。
ありがとうございます、でもmt4からは何も出てきません。searchを使用したところ、以下のアドレスにすべてのファイルが見つかりました。
C:\UsersQwerAppDataLocalLirtualStoreProgram Files﹑MetaTrader 4﹑include
以前はちゃんと保存されていたので、正直なところ、どうしてそこにあるのかわからない。