BuyTotalOp=0;// Количество Buy ордеров
SellTotalOp=0;// Количество Sell ордеровfor(int i=1; i<=OrdersTotal(); i++)// Цикл перебора ордер{if(OrderSelect( i-1, SELECT_BY_POS)==true)// Если есть следующий{// Анализ ордеров:if(OrderSymbol()!= Symb)continue;// Не наш фин. инструмif(OrderType()>1)// Попался отложенный{Alert("Обнаружен отложенный ордер. Эксперт не работает.");return;// Выход из start()}if(OrderType()==OP_BUY){
BuyTotalOp++;// Счётчик ордеров Buy
int start(){//----//Print (ExpertName);if(Bars<20)return(0);if( CheckNevBar)if(! NevBar())return(0);
TradesInThisSymbol = ExistPositions( sy);if( TradesInThisSymbol >0)return(0);if(AccountFreeMargin()< MarginMin){//Print("Not enough money to trade Strategy:", ExpertName);return(0);}
sy=Symbol();
Lots = GetSizeLot( sy, LotsWayChoice, LotsPercent, LotsDeltaDepo, LotsDepoForOne, LotsMax);if( CheckForOpen_Sell())
OpenPosition( sy,OP_SELL, Lots);// Тут работаетif( CheckForOpen_Buy())
OpenPosition( sy,OP_BUY, Lots);// Тут работаетif( CheckForClose_Buy())
ClosePositions( sy,OP_BUY);// Тут у меня что то неработаетif( CheckForClose_Sell())
ClosePositions( sy,OP_SELL);// Тут у меня что то неработает//----return(0);}//------------------------bool CheckForClose_Buy(){
Indicat_Var();if( ExistPositions( sy,OP_BUY, MagicNumber)){if( VininI_fast_trend ==-1)return(true); // Тут любое условие на закрытие//if(BB_MACD_2 > 0)return(true); // Тут любое условие на закрытиеelsereturn(false);}}//------------------------bool CheckForClose_Sell(){
Indicat_Var();if( NumberOfPositions( sy,OP_SELL, MagicNumber)>0){if( VininI_fast_trend ==1)return(true);// Тут любое условие на закрытие//if(BB_MACD_1 > 0) // Тут любое условие на закрытие//return(true);elsereturn(false);}}
いいえ、それは動作しません...1つの注文 - 1ロット、あなたが3ロットで注文を開いている場合は、あなたが望む方法 - 最初に1、次に1、次に1 - 注文は、すべてのロットを閉じて、すなわち、それが開かれたのと同じロットで注文を閉じ、あなたは部分的に注文を閉じることはできません...です。
私は注文を部分的に閉じるトラールを持っているのですが、それは間違いです。
もちろん、新規受注はないのでしょうか?
いいえ、それはそのように動作しません...1つの注文 - 1ロット、あなたは3ロットで注文を開いた場合、あなたはどのような方法でロットを分割することはできません - 最初に1、次に1、さらに1 - 注文は全体のロットを閉じ、すなわち、注文はそれが開かれたロットとクローズ、あなたは断片的に注文を閉じることができません...
"......注文をロットに分割することはできません..." - なぜ?技術的にはとっくに実装されており、P.85のRogerとKimIVのおかげで正規化ロット131のエラーは回避されました。また、「...1つの注文には1つのロット、3つのロットで注文を出すと、最初は1、次は1...と好きなように分割できない」という記述は誤りです。注文はロットと同様に、0.03、0.3、3...という数量で構成されています。で、0.01、0.1、1...と部分的に静かに閉じていきますよね?
そして、前回のリクエストのポイントは、配列に頼ることなく、標準的な計算を使用して、次のようにそれらを合計して、すべてのポジションを閉じることが可能である、ということです。
このまま進むべきか、それとも別の道を選ぶべきか、灯台を頼りに大海原を航海してきた疲れた船のような気分だ......」。
イゴール - 私たちは、あなたのブランチを無意味にゴミ箱に入れているのですか?
一度にすべてのペアを閉じることができますが、異なるペア、例.
1,2,1,2,2,1,2 総重複量 1-2-1+2+2+1+2=3 ロット
合計すると、我々は買い夏3ロットを取得し、このボリュームのカウンタを設定する3ロットを販売する
をクリックし、Close biを閉じます。
*
しかし、すべてのポジションをクローズすることは可能なのか、という質問に答える。
はい、可能です、次から次へと、スクリプトを使えばすぐです、aap!
スクリプト自体やクロージング機能は複数回公開されていますが...。
また、それらを設定することで、一度に閉じることも、条件ごとに閉じることもできます。
- 特定のシンボルによって
- 輸贏
- 損得勘定
それに伴い、基準の組み合わせも可能である...。
好き な 条件で注文を締められるようにしてください、それだけではうまくいきません。
ありがとうございました。
すべてをカバーします!!!
開いているポーズを閉じるだけです。
コール例
スクリプトを完全に閉じる。
キムさん最高です。脱帽です。
御社の機能をすべて勉強させていただきましたが、ひとつだけヒヤリとすることがあります。今、私が関数を書くときは脳から書くのですが、あなたの関数は私の頭の中にあります :-)。
私はプログラミングを始めた当初から、御社の多くの機能を研究してきました。
ありがとうございます。
好き な 条件で注文を締めたいのに、どうしてもうまくいかないので助けてください。
ありがとうございました。
説明
注文を閉じるための戦略は重要ではありません キムの関数を使って注文を閉じるのを手伝ってください