for(int i=0; i<OrdersTotal(); i++){if(!(OrderSelect( i, SELECT_BY_POS, MODE_HISTORY )))continue;//выбираем из истории счетаif(OrderSymbol()!=Symbol())continue;if(OrderMagicNumber()== Magic){
позиции =true;}}//Открытие позиции:bool Open_Buy(){bool res=false;if( условие_1){if( советник еще не открывал позиций с Магическим номером){
res=true;}}else{if( условие_1){if( условие_2 опирается на данные прошлого ордера){
res=true;}}}return( res);}
//==================Закрытие позиций ============================//----------------------------------------------------------------------for(int v=0; v<OrdersTotal(); v++){if(OrderSelect( v, SELECT_BY_POS, MODE_TRADES)){if(OrderSymbol()==Symbol()&&OrderMagicNumber()== Magic){//----------------------------------------------------- if(OrderType()==OP_BUY){// если открыта бай-позиция if( вот здесь вставляй свои условия закрытия){OrderClose(OrderTicket(),OrderLots(),Bid,3,Вlack);// закрываем позицию}}//--------------------------------------------------------if(OrderType()==OP_SELL){// если открыта селл-позиция if( вот здесь вставляй свои условия закрытия){OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow);// закрываем позицию}}//------------------------------------------------------- }// Symbol() }// select}//total//------------конец блока закрытия позиций-----------------
https://docs.mql4.com/ru/array/ArrayResize
そうですね、確かに。見てみたが、見あたらなかった。
ありがとうございます(苦笑)。
今日はゆっくりしています。週末に向けて休まないとね。
そのくらいでいいんです-。
ありがとうございます!!!使うのは...。
DDFedor
リド
ありがとうございます。
すべて同じ、コードは動作しませんでした、2キャンドル上のすべてのアクションを行いました。そして、位置はすでにもっと開いていないことを学ぶ必要があった...それは私が使用するすべての預金できたことをすべてで開いたので(( リド見て、多分あなたは何を追加する必要があります...非常に感謝されるだろう
助けてください。夜間取引してくれるEAが欲しいです。コードを書いているところ
int start()
{
string Symb;
Symb=Symbol();
string Vremya;
Vremya=TimeToStr(TimeLocal(),TIME_MINUTES);
if(Vremya > 23:00 || Vremya < 06:00 )
{
// тут торговые функции
}
}
エラーが発生します
'||' - 条件を文字列にすることはできません。
と条件を短くすると
if(ヴレミヤ > 23:00
が動作します。
そして、
になれば
if(ヴレミヤ < 06:00 )
は動作しません。
何が問題なのか理解できない。時刻の合わせ方を教えてください。
。
全て同じですが、コードがうまくいかず、2本のローソク足で全てのトレードを行いました。
確かにそうですね...。
ORDERSEND fiにマジックをセットするのを忘れていました。
今は正常に動作しています。確認しました。異なる方向性の取引は2つまで、一方向の取引は1つまでとすることができます。
どのような種類の取引も1つも必要ない場合は、f-ki NumberOfPositions(c)において、取引の種類を-1(マイナス1)に置き換える必要があります。
iTime 機能が何を示しているのか教えてください。
10桁の数字は何なんだ?秒単位?
年-月-日-時間-分に変換する方法は?
>> バーシフトを設定するだけで、デフォルトの時刻と日付が得られます(time=1 または true の場合は、時刻のみが得られます)。
とても便利な機能です、おすすめします。
2段目の調整を試みたが、うまくいかなかった。
してみましたが、テスト後すぐに1つの注文を開けたり閉めたりしてしまうので
了解です。履歴にポジションがあったかどうかを判断するには、こうすればよい。
しかし、その場合、あなたのコードはテスターでしか動作しないでしょう。そうしないと、EAオンラインのスイッチを入れるたびに、マジックを交換しなければなりません。
まさに、それこそが必要なことなのだ!
このコードをこのグリッドに正しく挿入する方法を教えてください。
(直接入れると、テスターが最初のポジションのオープニングで止まってしまうだけです)
2段目を調整しようとしたが、うまくいかなかった。
一見、理にかなっているように見えますが、テストでは注文を一度にオープンしたりカバーしたりします。
私の時は、クロージングポジションを扱いました。
https://www.mql5.com/ru/forum/105913
このブロックはSTART関数内に挿入する必要があり、Ema_1,Ema_2,Ema_3の計算の直後、多分一番最初に挿入します。
また、PRICES OPENでアドバイザーを動作させる必要があるらしく、そうしないとMAクロスがほぼ毎ティックで常にオープンポジションをクローズしてしまいます。
EAは、他のEAや手動で開いたポジションも含めて、すべてのポジションを決済してしまうからです。
しかし、さらにシンプルにする方法はすでに書いています。ポジションを開くときに NumberOfPositions(NULL,OP_BUY,Magic) と NumberOfPositions(NULL,OP_SELL,Magic) の代わりに、単に
NumberOfPositions(NULL,-1,Magic)
とすると、常に1つ以上のポジションが存在することはないでしょう。閉塞感なく。