//+------------------------------------------------------------------+//| ZeroLevel.mq4 |//| VadimVP |//| poluyan@fxmail.ru |/*
Скрипт поставит TakeProfit и StopLoss у открытых ордеров на текущем
инструменте на уровень безубыточности.
Расчет ведется только для ордеров текущего инструмента.
Учитывает своп и комиссии. Работает при любых Digits.
Точность +/- размер спреда.
Об успешности изменений сообщит в диалоговом окне.
Проверьте, включена ли опция "разрешить советнику торговать".
*///| //+------------------------------------------------------------------+#property copyright "VadimVP"#property link "poluyan@fxmail.ru"//+------------------------------------------------------------------+//| script program start function |//+------------------------------------------------------------------+int start()
{
int kol=0;
int kolOK=0;
int i=0;
double lots=0;
double sum=0;
double sum1=0;
for (i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()==OP_BUY)
{
lots=lots+OrderLots();
sum=sum+OrderLots()*OrderOpenPrice();
sum1=sum1+OrderProfit( )+OrderSwap( )+OrderCommission( ) ;
kol=kol+1;
}
if (OrderType()==OP_SELL)
{
lots=lots-OrderLots();
sum=sum-OrderLots()*OrderOpenPrice();
sum1=sum1+OrderProfit( )+OrderSwap( )+OrderCommission( ) ;
kol=kol+1;
}
}
double zeroprice=0;
if (lots!=0) zeroprice=sum/lots;
zeroprice = (MathRound(zeroprice*MathPow(10,Digits)))/MathPow(10,Digits);
//-----Alert ("!!! Пожалуйста дождитель окончания работы скрипта!");
int res = 0;
for (i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol()!=Symbol()) continue;
if (zeroprice>Ask)
{ if (OrderType()==OP_BUY) {if (zeroprice == OrderTakeProfit()) res=res+1; else { if (OrderModify(OrderTicket(),0,OrderStopLoss(),zeroprice,0,CLR_NONE)) res = res+1;} }
if (OrderType()==OP_SELL){if (zeroprice == OrderStopLoss()) res=res+1; else { if ( OrderModify(OrderTicket(),0,zeroprice,OrderTakeProfit(),0,CLR_NONE)) res = res+1;} } }
if (zeroprice<Bid)
{ if (OrderType()==OP_BUY) {if (zeroprice == OrderStopLoss()) res=res+1; else { if ( OrderModify(OrderTicket(),0,zeroprice,OrderTakeProfit(),0,CLR_NONE)) res = res+1;} }
if (OrderType()==OP_SELL){if (zeroprice == OrderTakeProfit()) res=res+1; else { if (OrderModify(OrderTicket(),0,OrderStopLoss(),zeroprice,0,CLR_NONE)) res = res+1;} } }
}
Alert ("***************************************************");
Alert ("Цена безубыточности "+DoubleToStr(zeroprice,Digits));
if (kol==res) Alert ("Все ордера успешно изменены! Точка безубыточности выставлена. ОК!"); elseAlert ("!!! Внимание!!! Не удалось изменить - " +(kol-res)+ " ордера из "+kol+" имеющихся");
Alert ("************ информация от ZeroLevel script ************");
//------return(0);
}
みんな、EAトレードのための良いDCをアドバイスしてください?
情報共有お願いします!普通のDCがないままフクロウを書いても意味ないですからね。
https://www.mql5.com/ru/market/product/1144
このEAを1800米ドルで販売していますが、EURUSDでテストしたところ、完璧に儲かりましたが、他のペアではゼロで取引されています、チケット履歴に調整されていると思いますが、可能でしょうか?
情報共有お願いします!普通のDCがないままフクロウを書いても意味ないですからね。
https://www.mql5.com/ru/market/product/1144
このEAを1800米ドルで販売していますが、EURUSDでテストしたところ、完璧に儲かりましたが、他のペアではゼロで取引されています、チケット履歴に調整されていると思いますが、可能でしょうか?
...そして、どのような言語ルールで造形されたのでしょうか!例えば、こんな感じです。
:)
そこが問題で、そこを正しく「定式化」する必要があるのですが、もともと論理的なセンスはあったのですが、1ヶ月ぶりにできました(((((( ;゚Д゚)))))
そこが問題で、そこを正しく「定式化」する必要があるのですが、今までロジックでよかったのに、ここ1ヶ月はできていません(((((( ;゚Д゚)))))
助けはすぐそこだ!
"if(iCCI(Symbol,0,14,PRICE_TYPICAL,0)<100&&iCCI(Symbol,0,14,PRICE_TYPICAL,0)<-100 {)"
私の意見では、この例では、3つのオープニングと2つのクロージングというブラケットが欠けています。フクロウの作者には、すべての括弧が一致するかどうかを確認するようアドバイスしています。
私ならこう書きます。
if ((iCCI(Symbol,0,14,PRICE_TYPICAL,0)<100)&(iCCI(Symbol,0,14,PRICE_TYPICAL,0)<-100))){
"if(iCCI(Symbol,0,14,PRICE_TYPICAL,0)<100&&iCCI(Symbol,0,14,PRICE_TYPICAL,0)<-100 {)"
私の意見では、この例では、3つのオープニングと2つのクロージングというブラケットが欠けています。フクロウの作者には、すべての括弧が一致するかどうかを確認するようアドバイスしています。
私ならこう書きます。
if ((iCCI(Symbol,0,14,PRICE_TYPICAL,0)<100)&(iCCI(Symbol,0,14,PRICE_TYPICAL,0)<-100))){
試してみましたが、まだリストの最後にエラーが表示されます。
この例では、3つの開き括弧と2つの閉じ括弧が抜けていると思います。フクロウの作者には、すべての括弧が一致するかどうかを確認するようアドバイスしています。
また、Notepad++もお勧めで、Notepad自体でmql4コードのC++構文を選択し、設定メニューのタブレーションをcp3(デフォルトでは4になっているようです)に設定する必要があります。一見すると、2つの使い方があるように見えます。
1. コード全体で似たような名前の変数をハイライトする
2. ペアブラケットがコード内のどこにあってもハイライト表示されます(コードがタブアラインの場合は垂直方向のハイライト表示も含む)。丸括弧、巻き括弧、角括弧のいずれでも可。
そして最後になりますが、便利な検索と置換(選択範囲を含む)、ラベリング(「マーク」)、一般的にシンプルで複雑でない開発環境です。メタエディターと組み合わせれば、もちろんスタジオではありませんが、中々強力なタンデムになります。
皆さん、ごきげんよう。
CUに発注するスクリプトがあるのですが。
スプレッドが考慮されるように変更したいので、よろしくお願いします。
例えば、ペアGBPCAD スプレッド10 - より多くの注文は売りです - ので、TPは1.7010で、ストップロスは1.7000(1.6999が理想的)でなければなりません))。
ありがとうございました。
スポイラーの付け方をアドバイス