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;
изменить уровень стоплосс ордера на новый
}
}
}
}
int start() { int ticket, total,totalExpert; //------------------------------------------------------ //为了简化和加速代码,让我们在临时变量中保存必要的//指标数据 SetTrace()。
4.在EA运行后,打开文件,得到这样的结果: 实用程序代码本身。
//+------------------------------------------------------------------+
//| 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);
}
//+------------------------------------------------------------------+
在一个专家顾问中对多个符号和/或时间段进行交易的相关性如何?
我目前正坐着思考--我是否应该发布符号_lib和专家顾问模板,就是为了这个目的而设计的=)
,我认为没有这种必要...如果我在不同的账户上交易--我仍然要运行几个终端,如果我在一个账户上交易--我只需打开几个窗口。而且会有更少的混乱,似乎...
听到对他们的意见和争论将是很有趣的;)
这是一个想法...它不仅仅是一种思想--它是一种理念))
第二天,我将查看专家顾问收集的错误,并考虑实施交易功能。我将在下周与你分享;)
在同一专家顾问中,在多个封印和/或时间段上进行交易的相关性如何?
作为投票的结果(1人反对(Komposter),0人赞成,其余弃权),我决定不在这个主题中发布多符号交易的垃圾信息=)
如果有人感兴趣,请与我联系,我将分享图书馆;-|。
要使用。
1.将这个文件以mqh为扩展名,Tracert.mqh写在 experts/include/
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倍以上
有很多变化。而且是一个巨大的。
容错率达到了一个全新的水平,信息更加完整,界面更加友好;) ...
总的来说,我们可以说,这绝对是一个新的图书馆=)
请随意使用;)