//---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //----
//---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); int i,n;
int i, k=OrdersTotal(),ti;
for (i=0; i<k; i++){
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
if(OrderType()== OP_SELLSTOP){
ti = OrderMagicNumber(); }
if(OrderType()== OP_BUY)
if(OrderTicket()==ti) что дальше не пойму, как узнать о наличии ордера бай с нужным тикетом?
int i, k=OrdersTotal(), ti, tid;
for (i=0; i<k; i++){
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderType()== OP_SELLSTOP) {
tid = OrderTicket(); // запомним тикет ордера селлстоп - если его придётся удалить...
ti = OrderMagicNumber();
// ищем ордер по тикету
if (OrderSelect(ti, SELECT_BY_TICKET)==true) {
// проверяем Закрылся ли этот ордер - это твоя Байка
if (OrderCloseTime() > 0) {
// удаляем ордер Селлстоп - если связанная с ним байка Закрылась...
OrderDelete(tid);
}
}
}
}
}
请告知在下列情况下该如何做。
在测试器中工作正常,一切按计划进行,但在realsk上却无法打开交易。
P.S. 真的需要一些帮助,这是一个生命或死亡的问题。
已被MODE_TRADES?我不是专家,也许有一个问题?
我的数学有什么问题?
我的currentPrice >= profitLine的意思是,如果profitLine ==或>,对吗?
但对我来说,如果>了至少一个点,它就能发挥作用。
你有没有看 一下"常见问题"?
是的,嗯...没有想到这一点。谢谢。(笑)。
尊敬的专家,关于指标的问题已被删除,解决方案来得很意外,我重复了计算,哎呀....一切都在运作。
但我还有一个,它是如何工作的,我想了解。代码见附件。
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow
extern int PerMa = 5;
extern int Shift = 0;
extern int Step = 15;
double ABuf45[],ABuf[],ABuf5[],ABuf15[];//,Stark[];
double Stark;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{ Stark=0;
//---- indicators
// IndicatorBuffers(4);
SetIndexBuffer(0,ABuf);
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int i,n;
//----
i=Bars-counted_bars-1;
while(i>=0)
{ RefreshRates();
//----
double Ma15=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,i);
double Ma45=iMA(NULL,0,50,0,MODE_EMA,PRICE_CLOSE,i);
double Ma=iMA(NULL,0,PerMa,0,MODE_EMA,PRICE_CLOSE,i);
//double Ma1=iMA(NULL,0,PerMa,Shift,MODE_EMA,PRICE_CLOSE,i+1);
if(Ma>Stark+Step*Point&&Ma15>Ma45){Stark=Ma;}
if(Ma<Stark-Step*Point&&Ma15<Ma45){Stark=Ma;}//else{Stark=Stark;}
ABuf[i+Shift]=Stark;Comment(Stark);
if(Ma>Stark+Step*Point&&Ma15>Ma45){Stark=Ma;}//else{Stark=Stark;}
if(Ma<Stark-Step*Point&&Ma15<Ma45){Stark=Ma;}//else{Stark=Stark;}
ABuf[i+Shift]=Stark;//Comment(Stark);
//----
i--;
}
return(0);
}
撤消了。我编造了各种各样的胡言乱语。事实证明,这要简单得多。我把Stark变量从启动函数中拿出来,这样它就不会在每次打勾 时都重置。
sig1 "信号 ,"买入 "命令被触发,"卖出 "挂单被置于 "买入 "订单之下。
当"买入 "头寸被关闭时,"卖出 "头寸也被删除。
但是当这个BUY没有关闭,而下一个BUY等被打开时,会发生什么?
首先设置的这个SELLSTOP必须以某种方式进行计算,以便在第一个BUY被关闭后将其关闭。
此外,如果价格突破了待定的,然后它收盘时没有损失,那么待定的已经被设置在与前者相同的位置。
-----------------------------------
这并不能解决问题,因为在卖出关闭后,一个新的卖出将 以不同的主人打开 ,它将被删除。
关闭购买后,我不知道如何。
sig1 "信号 ,"买入 "命令被触发,"卖出 "挂单被置于 "买入 "订单之下。
当 "买入 "头寸被关闭时,"卖出 "头寸也被删除。
但是当这个BUY没有关闭,而下一个BUY等被打开时,会发生什么?
首先设置的这个SELLSTOP必须以某种方式进行计算,以便在第一个BUY被关闭后将其关闭。
此外,如果价格突破了待定的,然后它收盘时没有损失,那么待定的已经被设置在与前者相同的位置。
-----------------------------------
这并不能解决问题,因为在卖出关闭后,一个新的卖出将 以不同的主人打开 ,它将被删除。
在购买结束后,我不知道如何。
那么......你用同样的选择来检查......
你有很多的想法...相信我,你正在做的是废话......不要浪费你的时间...你的 "马丁格尔 "并不那么容易运作...