int CurPrice_p=Bid/Point; //текущая цена в пунктах
int CurSLoss=OrderStopLoss( )/Point; //текущий стоплосс в пунктах
int TS=40; //значение трейлингстопа в пунктах
if(TS>=5)
{
int TStep=2; //минимальный шаг трейлинг стопа
if(TStep<1) TStep=1; //проверка шага трейлинга
{
if(MathAbs(CurPrice_p-CurSLOss)>=TS+TStep)
{
if(CurPrice_p>CurSLOss)
{
double NewSLoss=(CurPrice_p-TS)*Point;
изменить уровень стоплосс ордера на новый
}
if(CurPrice_p>CurSLOss)
{
NewSLoss=(CurPrice_p+TS)*Point;
изменить уровень стоплосс ордера на новый
}
}
}
}
//+------------------------------------------------------------------+
//| Tracert.mq4 |
//| Rosh |
//| http://forexsystems.ru/phpBB/index.php |
//+------------------------------------------------------------------+
#property copyright "Rosh"
#property link "http://forexsystems.ru/phpBB/index.php"
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
double tr_AOPLong,tr_AOPShort;
double tr_LongLots,tr_ShortLots;
int tr_CurrLongOrders,tr_CurrShortOrders;
int tr_Total,tr_Counter;
int tr_PrevLongOrders,tr_PrevShortOrders;
int tr_CurrTotalOpenedOrders,tr_PrevTotalOpenedOrders;
double tr_CurrBalance,tr_PrevCurrBalance;
color tr_ProfitColor=Lime, tr_LossColor=DeepPink,tr_LongAOPColor=Blue,tr_ShortAOPColor=Red, tr_CurrCloseColor;
int tr_CloseLabelArrow=108, tr_AOPLabelArrow=159;
bool tr_CloseLong,tr_CloseShort;
double tr_CloseLabelPrice;
int tr_CloseLabelShift=20;
int tr_CounterCloseLabel=0,tr_CounterAOPLabel=0;
int tr_Bars;
void SetTrace()
{
//----
if (IsTesting()&&(tr_Bars!=Bars))
{
tr_CloseLong=false;
tr_CloseShort=false;
tr_AOPLong=0.0;
tr_AOPShort=0.0;
tr_LongLots=0.0;
tr_ShortLots=0.0;
tr_CloseLabelShift=iATR(NULL,0,50,1)*3.0/10.0/Point;
if (tr_CurrBalance==0.0)
{
tr_CurrBalance=AccountBalance();
tr_PrevCurrBalance=AccountBalance();
}
//----------------Проверка открытых позиций ---------------------------
tr_CurrLongOrders=0;
tr_CurrShortOrders=0;
tr_CurrTotalOpenedOrders=0;
tr_Total=OrdersTotal();
if (tr_Total>0)// есть открытые позиции
{
for (tr_Counter=0;tr_Counter<tr_Total;tr_Counter++)// подсчет открытых позиций
{
OrderSelect(tr_Counter, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==OP_BUY)
{
tr_CurrLongOrders++;
tr_AOPLong=tr_AOPLong+OrderLots()*OrderOpenPrice();
tr_LongLots=tr_LongLots+OrderLots();
}
if (OrderType()==OP_SELL)
{
tr_CurrShortOrders++;
tr_AOPShort=tr_AOPShort+OrderLots()*OrderOpenPrice();
tr_ShortLots=tr_ShortLots+OrderLots();
}
}// подсчет открытых позиций
//--------------- усреднение ---------------------
if (tr_CurrLongOrders>0) tr_AOPLong=tr_AOPLong/tr_LongLots;
if (tr_CurrShortOrders>0)tr_AOPShort=tr_AOPShort/tr_ShortLots;
//--------------- усреднение ---------------------
if (tr_AOPLong>0.0)
{
ObjectCreate("AOP"+tr_CounterAOPLabel,OBJ_ARROW,0,Time[1],tr_AOPLong);// не совсем корректно, но пока пойдет
ObjectSet("AOP"+tr_CounterAOPLabel,OBJPROP_ARROWCODE,tr_AOPLabelArrow);
ObjectSet("AOP"+tr_CounterAOPLabel,OBJPROP_COLOR,tr_LongAOPColor);
tr_CounterAOPLabel++;
}
if (tr_AOPShort>0.0)
{
ObjectCreate("AOP"+tr_CounterAOPLabel,OBJ_ARROW,0,Time[1],tr_AOPShort);// не совсем корректно, но пока пойдет
ObjectSet("AOP"+tr_CounterAOPLabel,OBJPROP_ARROWCODE,tr_AOPLabelArrow);
ObjectSet("AOP"+tr_CounterAOPLabel,OBJPROP_COLOR,tr_ShortAOPColor);
tr_CounterAOPLabel++;
}
// Print("Long=",tr_CurrLongOrders," tr_AOPLong=",tr_AOPLong," *** Short=",tr_CurrShortOrders," tr_AOPShort=",tr_AOPShort);
tr_CurrTotalOpenedOrders=tr_CurrLongOrders+tr_CurrShortOrders;
if ((tr_CurrTotalOpenedOrders!=tr_PrevTotalOpenedOrders)||(tr_PrevLongOrders!=tr_CurrLongOrders)||(tr_PrevShortOrders!=tr_CurrShortOrders)) // изменилось колчиство ордеров в рынке
{
if (tr_PrevLongOrders>tr_CurrLongOrders) // изменилось число ордеров в Long
{
tr_CloseLong=true;
tr_CloseLabelPrice=High[1]+tr_CloseLabelShift*Point;
}
if (tr_PrevShortOrders>tr_CurrShortOrders) // изменилось число ордеров в Short
{
tr_CloseShort=true;
tr_CloseLabelPrice=Low[1]-tr_CloseLabelShift*Point;
}
tr_PrevLongOrders=tr_CurrLongOrders;
tr_PrevShortOrders=tr_CurrShortOrders;
tr_PrevTotalOpenedOrders=tr_CurrTotalOpenedOrders;
}
}// есть открытые позиции
//---------------- Проверка изменения Баланса
tr_CurrBalance=AccountBalance();
if (tr_CurrBalance!=tr_PrevCurrBalance)// проверка изменения Balance
{
if (tr_CurrBalance-tr_PrevCurrBalance>0.0) tr_CurrCloseColor=tr_ProfitColor; else tr_CurrCloseColor=tr_LossColor;
tr_PrevCurrBalance=tr_CurrBalance;
//------------------ установка Метки закрытия --------------------
ObjectCreate("Close"+tr_CounterCloseLabel,OBJ_ARROW,0,Time[1],tr_CloseLabelPrice);
ObjectSet("Close"+tr_CounterCloseLabel,OBJPROP_ARROWCODE,tr_CloseLabelArrow);
ObjectSet("Close"+tr_CounterCloseLabel,OBJPROP_COLOR,tr_CurrCloseColor);
tr_CounterCloseLabel++;
//------------------ установка Метки закрытия --------------------
}// проверка изменения Balance
}//(IsTesting())
//----
tr_Bars=Bars;
return(0);
}
//+------------------------------------------------------------------+
1 Expert Advisor内の複数のシンボルおよび/またはタイムフレームの取引はどのように関連していますか?
私は現在座って考えている - シンボル_libとExpert Advisorテンプレートを投稿すべき、まさにこの目的のために設計された =)
と私はその必要はありませんと思います...異なる口座で取引する場合でも、複数のターミナルを起動 する必要がありますし、1つの口座で取引する場合でも、複数のウィンドウを開くだけです。そして、混乱も少なくなると思われる...。
それに対する意見や反論を聞くのも面白いかもしれませんね;)
というわけで.それは思考以上のものであり、それはアイデアである ))
翌日はExpert Advisorが収集したエラーに目を通し、取引機能の実装を考える。来週にでもご紹介します;)
同じExpert Advisorで複数のSealやTimeframeで取引することは、どのように関連するのでしょうか?
投票の結果(反対1名(komposter)、賛成0名、残り棄権)、このスレッドにマルチシンボル取引のゴミを投稿しないことにしました =)。
もし、興味がある人がいたら、私に連絡してください。
使用すること。
1.このファイルを拡張子mqhでTracert.mqhとして expertsinclude フォルダーに書き込む
2.行を追加#include <Tracert.mqh>
"http://*********"
3.start() ブロックの一番最初に関数SetTrace() を挿入;
4.EA実行後、ファイルを開くと、次のようなものが出てきます。 ユーティリティのコードそのものです。
も使用する。インクルードの行の旧名称を新名称に変更するだけです。
ファイルは、http://forum.viac.ru/viewtopic.php?t=2973 にあります。
これらのファイルを、最新のも以前のものも含めて、viacやalpari、forexitems、finlistsなど、一般的にファイルを添付できる場所に掲載していただけないでしょうか。また、見つけやすくもなるでしょう。ありがとうございました。
これらのファイルや最近のもの、以前のものをすべてviacやalpari、forexitems、finlistなど、一般的にファイルを添付できる場所に置いていただけないでしょうか。また、見つけやすくもなるでしょう。ありがとうございました。
http://forum.viac.ru/viewtopic.php?t=2973
後日、指示のある記述を移動します・・・。
テスト速度が10倍以上向上
いろいろな変化がありますね。しかも大がかりなものを。
エラー耐性は全く新しいレベルに達し、情報はより完全で、インターフェースはより親しみやすくなっています ;) ...
一般的には、全く新しいライブラリであると言えます =)。
ご自由にお使いください ;)