编码帮助 - 页 246

 
macerina:
谢谢Mladen的代码...这是否像您在前面的逻辑中解释的那样,有双macd的比较和50的交叉。 提前感谢

马塞里纳

不同的是,在Aspen图形版本中,次级进场信号是rsi和其信号线 的交叉,而在metatrader版本中,次级信号是rsi和50线的交叉。Macd部分是一样的(你应该采取封闭的信号--在aspen图形版本中是这样做的)。

 

谢谢你的信息mladen ......是否可以在同一个指标中设置选择50线交叉和信号线 交叉的选项......。

谢谢

 
mladen:
sulaimoney 这些程序都是正常的。附上一个简单的指标,当调用这两个程序后,显示一切正常。检查代码的其他部分,因为错误不在这两个程序中。

你好,Mladen

我已经检查了 代码,发现了一些错误,我已经替换了。

现在我试图使用以下值

double lastorderprice = 0。

int bscount = 0。

作为全局范围内的变量,这样它们就可以被调用,例如 void NewOrder()

// OnEveryTick

void LastBuySellOrder() // 循环查看所有未平仓的订单以选择最后的订单(买入/卖出) OnEveryTick

{

double lastorderprice = 0;

datetime lastTime = 0;

datetime closeTime = 0;

int lastTicket = -1; // 无开放。

for (int i=OrdersTotal()-1; i >= 0; i--)

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

如果(OrderSymbol() == Symbol() && OrderMagicNumber() == OrderId

&&( OrderType() == OP_BUY || OrderType() == OP_SELL )

&& OrderOpenTime() >= lastTime && OrderCloseTime() == closeTime

&& OrderTicket() > lastTicket )

{

lastTime = OrderOpenTime();

lastorderprice = OrderOpenPrice();

closeTime = OrderCloseTime();

LastTicket = OrderTicket()。

}

return(lastTicket)。

}

否则

Print("OrderSelect()错误 - ", ErrorDescription(GetLastError()))。

}

void PendingStopOrderCount()

{

int bscount = 0。

for (int i=OrdersTotal()-1; i >= 0; i--)

如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)

{

如果(OrderSymbol() == Symbol()

如果(OrderMagicNumber() == OrderId)

如果(OrderType() == OP_BUYSTOP )

{

bscount++;

}

}

否则

{

Print("OrderSend() error - ", ErrorDescription(GetLastError()))。

}

}

// 如果存在OpBuy或OpSell

void NewOrder()

{

如果(bscount==0)

{

BuyStopPending()。

}

}

 

HI

这个指标是重绘的吗?如果是的话,什么时候回调多少条?

xps_v8_oscillator.ex4xps_v8_oscillator.mq4

附加的文件:
 
toldmikl:
HI

这个指标是重绘的吗?如果是的话,什么时候回调多少条?

xps_v8_oscillator.ex4xps_v8_oscillator.mq4
是的,它是一个太阳风指标,周期根据时间框架自动设置。

1分钟:周期=2880

5分钟:周期=576

15分钟:周期=192

30分钟:周期=96

1小时及以上:周期=48

 

好的,但我在离线图表M2上使用这个:S所以它不是正常的时间框架

 
toldmikl:
好吧,但我在离线图表M2上使用这个:S 所以它不是正常的时间框架。

试试吧,你自己就知道了(使用自动刷新之类的东西来强制指标刷新所有的条形图,或者干脆,当有足够多的新条形图出现时,进入参数,不要改变任何东西,点击确定)。请注意,当趋势发生变化时,它将做什么。

这比我试图解释太阳风代码中的问题并说服任何人要好。

 

我不能改变周期,只能看到源代码,这就是它。

#属性 indicator_separate_window

#属性 indicator_minimum 0

#属性 indicator_maximum 1

#属性 indicator_buffers 3

#属性 indicator_color2 C'72,49,255'.

#属性 indicator_color3 C'255,49,72'.

#属性 indicator_width2 6

#属性 indicator_width3 6

int period;

外部的bool alarm=false。

double ExtBuffer0[];

double ExtBuffer1[];

double ExtBuffer2[];

double alertBar;

double last;

int init() {

//-----------------------------

switch ( Period() )

{

case 1: period = 2880;break;

case 5: period = 576;break;

case 15: period = 192;break;

case 30: period = 96;break;

case 60: period = 48;break;

case 240: period = 48;break;

case 1440: period = 48;break;

case 10080:period = 48;break;

默认情况:周期=48;break。

}

//-----------------------------

SetIndexStyle(0,DRAW_NONE);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexStyle(2,DRAW_HISTOGRAM);

IndicatorDigits(Digits+1);

SetIndexBuffer(0,ExtBuffer0);

SetIndexBuffer(1,ExtBuffer1);

SetIndexBuffer(2,ExtBuffer2)。

IndicatorShortName("");//X :-)")。

SetIndexLabel(0, NULL);

SetIndexLabel(1, NULL);

SetIndexLabel(2, NULL)。

返回(0)。

}

int deinit()

{

//----

ObjectDelete("XPS");

ObjectDelete("XPS2");

ObjectDelete("XPS3")。

//----

return(0);

}

int start() {

int limit;

int counted_bars=IndicatorCounted();

double prev,current,old;

double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0;

双重价格。

double MinL=0;

double MaxH=0。

如果(counted_bars>0) counted_bars--。

limit=Bars-counted_bars;

for(int i=0; i<limit; i++)

{ MaxH = High;

MinL = Low[Lowest(NULL,0,MODE_LOW,period,i)] 。

价格=(High+Low)/2。

Value = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1;

Value=MathMin(MathMax(Value,-0.999),0.999)。

ExtBuffer0=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1。

Value1=Value。

Fish1=ExtBuffer0;

}

bool up = TRUE;

for(i=limit-2; i>=0; i--)

{

current=ExtBuffer0;

prev=ExtBuffer0;

如果((current0))|(current<0)) up= false。

如果((current>0)&&(prev0))up= true。

if(!up) {

ExtBuffer2=1。

ExtBuffer1=0。

如果(alarm && i==0 && last != 2 && ExtBuffer1 == 0 && Bars>alertBar)

{

Alert("OSC...可能的趋势是在",Period()," ",Symbol()上下降。)

alertBar = Bars;last = 2;

}

}

否则 {

ExtBuffer1=1。

ExtBuffer2=0。

if (alarm && i==0 && last != 1 && ExtBuffer2 == 0 && Bars>alertBar)

{

Alert("OSC...可能的趋势是在",Period()," ",Symbol()上上升。)

alertBar = Bars;

last = 1;

}

}

}//结束循环

ObjectDelete("XPS")。

ObjectCreate("XPS",OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS","!XPS v8", 28, "Arial Black", C'46,46,46')。

ObjectSet("XPS", OBJPROP_CORNER, 2);

ObjectSet("XPS", OBJPROP_BACK, 0);

ObjectSet("XPS", OBJPROP_XDISTANCE, 6);

ObjectSet("XPS", OBJPROP_YDISTANCE, 8);

ObjectDelete("XPS2")。

ObjectCreate("XPS2", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS2","!XPS v8", 28, "Arial Black", Silver)。

ObjectSet("XPS2", OBJPROP_CORNER, 2);

ObjectSet("XPS2", OBJPROP_BACK, 0);

ObjectSet("XPS2", OBJPROP_XDISTANCE, 4);

ObjectSet("XPS2", OBJPROP_YDISTANCE, 10);

ObjectDelete("XPS3")。

ObjectCreate("XPS3", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS3", "Trade like a BOSS", 9, "Arial Black", Silver);

ObjectSet("XPS3", OBJPROP_CORNER, 2);

ObjectSet("XPS3", OBJPROP_BACK, 0);

ObjectSet("XPS3", OBJPROP_XDISTANCE, 7);

ObjectSet("XPS3", OBJPROP_YDISTANCE, 3);

return(0);

}

所以呢?

 
toldmikl:
我不能改变周期,只能看到源代码,这就是它。

#属性 indicator_separate_window

#属性 indicator_minimum 0

#属性 indicator_maximum 1

#属性 indicator_buffers 3

#属性 indicator_color2 C'72,49,255'.

#属性 indicator_color3 C'255,49,72'.

#属性 indicator_width2 6

#属性 indicator_width3 6

int period;

外部的bool alarm=false。

double ExtBuffer0[];

double ExtBuffer1[];

double ExtBuffer2[];

double alertBar;

double last;

int init() {

//-----------------------------

switch ( Period() )

{

case 1: period = 2880;break;

case 5: period = 576;break;

case 15: period = 192;break;

case 30: period = 96;break;

case 60: period = 48;break;

case 240: period = 48;break;

case 1440: period = 48;break;

case 10080:period = 48;break;

默认情况:周期=48;break。

}

//-----------------------------

SetIndexStyle(0,DRAW_NONE);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexStyle(2,DRAW_HISTOGRAM);

IndicatorDigits(Digits+1);

SetIndexBuffer(0,ExtBuffer0);

SetIndexBuffer(1,ExtBuffer1);

SetIndexBuffer(2,ExtBuffer2)。

IndicatorShortName("");//X :-)")。

SetIndexLabel(0, NULL);

SetIndexLabel(1, NULL);

SetIndexLabel(2, NULL)。

返回(0)。

}

int deinit()

{

//----

ObjectDelete("XPS");

ObjectDelete("XPS2");

ObjectDelete("XPS3")。

//----

return(0);

}

int start() {

int limit;

int counted_bars=IndicatorCounted();

double prev,current,old;

double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0;

双重价格。

double MinL=0;

double MaxH=0。

如果(counted_bars>0) counted_bars--。

limit=Bars-counted_bars;

for(int i=0; i<limit; i++)

{ MaxH = High;

MinL = Low[Lowest(NULL,0,MODE_LOW,period,i)] 。

价格=(High+Low)/2。

Value = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1;

Value=MathMin(MathMax(Value,-0.999),0.999)。

ExtBuffer0=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1。

Value1=Value。

Fish1=ExtBuffer0;

}

bool up = TRUE;

for(i=limit-2; i>=0; i--)

{

current=ExtBuffer0;

prev=ExtBuffer0;

如果((current0))|(current<0)) up= false。

如果((current>0)&&(prev0))up= true。

if(!up) {

ExtBuffer2=1。

ExtBuffer1=0。

如果(alarm && i==0 && last != 2 && ExtBuffer1 == 0 && Bars>alertBar)

{

Alert("OSC...可能的趋势是在",Period()," ",Symbol()上下降。)

alertBar = Bars;last = 2;

}

}

否则 {

ExtBuffer1=1。

ExtBuffer2=0。

if (alarm && i==0 && last != 1 && ExtBuffer2 == 0 && Bars>alertBar)

{

Alert("OSC...可能的趋势是在",Period()," ",Symbol()上上升。)

alertBar = Bars;

last = 1;

}

}

}//结束循环

ObjectDelete("XPS")。

ObjectCreate("XPS", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS","!XPS v8", 28, "Arial Black", C'46,46,46')。

ObjectSet("XPS", OBJPROP_CORNER, 2);

ObjectSet("XPS", OBJPROP_BACK, 0);

ObjectSet("XPS", OBJPROP_XDISTANCE, 6);

ObjectSet("XPS", OBJPROP_YDISTANCE, 8);

ObjectDelete("XPS2")。

ObjectCreate("XPS2", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS2","!XPS v8", 28, "Arial Black", Silver)。

ObjectSet("XPS2", OBJPROP_CORNER, 2);

ObjectSet("XPS2", OBJPROP_BACK, 0);

ObjectSet("XPS2", OBJPROP_XDISTANCE, 4);

ObjectSet("XPS2", OBJPROP_YDISTANCE, 10);

ObjectDelete("XPS3")。

ObjectCreate("XPS3", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS3", "Trade like a BOSS", 9, "Arial Black", Silver);

ObjectSet("XPS3", OBJPROP_CORNER, 2);

ObjectSet("XPS3", OBJPROP_BACK, 0);

ObjectSet("XPS3", OBJPROP_XDISTANCE, 7);

ObjectSet("XPS3", OBJPROP_YDISTANCE, 3);

return(0);

}

那么?

它对任何不是标准时间框架的时间段(如 "2分钟 "离线图表)应用周期48

关于可以改变计算周期的太阳风的版本,请看这个主题:https://www.mql5.com/en/forum/179650

 

向各位大师问好!请帮助我编辑这个脚本,只留下订单、手数、买入/卖出。我已经拥有一个自动设置止盈/止损 的EA,因此与这个独立的脚本相冲突。

这个脚本会自动打开你在菜单中指定的任何数量的市场订单,但目前它只打开了一个订单,即使你输入5个订单。请帮助我解决这个错误,并完全删除SCRIPT中的获利/止损。

祝福你

附加的文件:
原因: