如何编码? - 页 187

 

是的,我想做3个步骤

举个例子。

达到15级,回来10级

走到30步,再回来15步

达到45点,再回来15点

或者在止损 点关闭。

我将拍一张照片,并试图更好地解释。

 
fosgate_r:
这对我来说是件新鲜事。

那么,亏损的交易结束后,总是需要等待它反弹,对吗?

如果它不反弹呢?

我们会在最初的SL上收盘吗?

谢谢你,我已经做出来了,现在正在尝试优化,以获得良好的损失保护效果。

 

我试图找到关于绘制直线的信息,就像RSI指标那样。我有两个数字,我想在同一个指标上绘制成直线。

我知道这将涉及到某种数组,但我不知道哪一组代码可以实现这一目标。

 

指标缓冲器

SPACECHIMP:
我试图找到关于绘制直线的信息,就像RSI指标一样。我有两个数字,我想在同一个指标上绘制成直线,我知道这将涉及到某种数组,但我不知道哪一组代码可以实现这一点。

请阅读这篇文章

新手的MQL4语言。自定义指标(第一部分) - MQL4文章

 
smb1970:
嗨,伙计们。

我不知道是否有人熟悉乔治-史密斯的《外汇制造-EZ》。

我目前正在审阅他的作品,不知道是否有人为他使用的奥斯卡振荡器编了一个指标?

其公式为

让A=过去8个柱子(包括这个)的最高点

让B = 过去八个柱子(包括这一个)中的最低点

让C = 当前条形图的收盘价

让X =之前的振荡器数字(奥斯卡)。

今天的 "粗略 "震荡指标等于(C-B)除以(A-B)乘以100。

接下来我们 "平滑 "我们的粗略数字(让我们称之为Y),像这样。

最终振荡器的数量=((X除以3)乘以2),加上(Y除以3)。

如果有人编过这样的代码,或能编出这样的代码,将非常感谢。

Regards Steve

我自己也曾尝试过这样的编码。有谁能评论一下这是否能达到我所想的效果。如果我手动计算这些数字,其数值似乎并不完全吻合。另外,它只从指标放置的时间开始。我希望它也能显示历史值。

#property indicator_separate_window

#属性 indicator_buffers 1

#属性 indicator_color1 Red

//---- 缓冲区

double ExtMapBuffer1[];

//+------------------------------------------------------------------+

//|自定义指标 初始化函数 |

//+------------------------------------------------------------------+

int init()

{

//---- 指标

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

string short_name = "Oscar Indicator";

IndicatorShortName(short_name)。

//----

return(1);

}

//+------------------------------------------------------------------+

//|Custor指标去初始化函数

//+------------------------------------------------------------------+

int deinit()

{

return(0);

}

//+------------------------------------------------------------------+

//|自定义指标迭代函数|

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted()。

//----,检查是否有错误

如果(counted_bars<0)返回(-1)。

//---- 最后一个被计算的柱子将被重新计算。

如果(counted_bars>0) counted_bars--;

int pos=Bars-counted_bars。

//---- 主计算循环

双重x。

x=50;

while(pos>=0)

{

双重a, b, c, y, osc;

//让A=过去八个小节(包括这个小节)的最高点

a=高点。

//让B = 过去8个柱子的最低点(包括这一个)。

b=低点。

//let C = 当前条形图的收盘价

c = Close[pos];

//let X = 上一个振荡器数字(Oscar)。

//今天的 "粗略 "振荡器等于(C-B)除以(A-B)乘以100。

y=((C-B)/(A-B))*100。

//接下来我们像这样 "平滑 "我们的粗略数字(让我们称之为Y)。

//最终振荡器的数量=((X除以3)乘以2),加上(Y除以3)。

osc=((X/3)*2)+(Y/3)。

ExtMapBuffer1[pos]= osc ;

pos--。

}

返回(0)。

}

希望得到任何帮助。

谢谢你,史蒂夫

 

询问...模式_交易

嗨,谁能举例说明MODE_TRADES的用途?

谢谢。

 

对smb1970来说--这就是它。

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 Red

#property indicator_maximum 100

#property indicator_minimum 0

//

//

//

//

//

extern int OscPeriod = 8;

extern int OscPrice = PRICE_CLOSE;

double oscBuffer[];

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

//

//

//

//

//

int init()

{

SetIndexBuffer(0,oscBuffer);

IndicatorShortName("Osc ("+OscPeriod+")");

return(0);

}

int deinit() { return(0); }

int start()

{

int counted_bars=IndicatorCounted();

int i,limit;

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//

//

//

//

//

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

{

double price = iMA(NULL,0,1,0,MODE_SMA,OscPrice,i);

double high = High[ArrayMaximum(High,OscPeriod,i)];

double low = Low[ArrayMinimum(Low,OscPeriod,i)];

//

//

//

//

//

if (high!=low)

double raw = 100.00*(price-low)/(high-low);

else raw = 0.00;

oscBuffer= oscBuffer*2.0/3.0 + raw/3.0;

}

return(0);

}

但是,也请看一下图片:上面是 "奥斯卡",下面是随机指数(8)的Ema(5),或者更简单地说,下面是随机指数(8,5,1),信号线 设置为指数。所以 "Oscar "只是随机指数的一条信号线。

附加的文件:
oscar.gif  21 kb
 

谢谢!

谢谢mladen,这不仅是非常有用的,而且也是非常有启示意义的!

 

新生儿在编码方面需要一些帮助 :-(

大家好。

我在这里需要一些不同的帮助 。 我有一些代码,将寻找不同指标之间的协议。 一旦它们达成一致,我希望能以我在图表中描述的方式进入交易。 到目前为止,我可以输入第一笔 "买入 "交易,但它并不是只输入一笔交易....,而是输入多达8笔交易。 然后,如果市场对我不利,我就会进入一个 "应急交易",尽管市场对我不利,我还是会再次买入/卖出。 如果有人能告诉我正确的代码应该是什么样子的,我将非常感激

不确定这些图片是否会显示,但为了以防万一,我也把它们作为附件。

这是我的有缺陷的代码,应该执行交易......

while (execute_trade ==5)

{if ( OrdersTotal() == buy_trade1 ) //buy_trade1 = 1......这在下了一个订单后就停止了......但还没有发挥作用

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point)。

execute_trade=0。

如果(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))

Print("My ticket is: " , ticket);

{

buy1 = OrderOpenPrice(); //获取第一笔订单的价格并将其推入该变量中

// Comment("订单#1的开盘价 是" , OrderOpenPrice() + " " + buy1 + " 小于 " + (buy1-0.0030))。

如果(buy1 >= (buy1-0.0030))

{

//if ( OrdersTotal() <= buy_trade1 ) //这将在1个订单下达后停止。

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point) 。

//execute_trade=0。

}

} else

Print("OrderSelect返回错误为",GetLastError())。

}

 

新手在编码方面需要一些帮助

大家好。

我在这里需要一些不同的帮助。我有一些代码,将寻找不同指标之间的协议。一旦它们达成一致,我想让交易以我在图表图片中描述的方式进入。到目前为止,我可以输入第一笔 "买入 "交易,但它并不是只输入一笔交易....,而是输入多达8笔交易。然后,如果市场对我不利,我就会进入一个 "应急交易",尽管市场对我不利,我还是会再次买入/卖出。如果有人能告诉我正确的代码应该是什么样子的,我将非常感激。

我不确定这些图片是否会显示,但为了以防万一,我也把它们作为附件。

图1

图2

这是我有缺陷的代码,应该是执行交易的代码...

while (execute_trade ==5)

{if ( OrdersTotal() == buy_trade1 ) //buy_trade1 = 1......这在下了一个订单后就停止了......但还没有发挥作用

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+ TakeProfit*Point)。

execute_trade=0。

如果(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))

Print("My ticket is: " , ticket);

{

buy1 = OrderOpenPrice(); //获取第一笔订单的价格并将其推入该变量中

// Comment("订单#1的开盘价 是" , OrderOpenPrice() + " " + buy1 + " 小于 " + (buy1-0.0030))。

如果(buy1 >= (buy1-0.0030))

{

//if ( OrdersTotal() <= buy_trade1 ) //这将会在1个订单被下达后停止。

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+ TakeProfit*Point)。

//execute_trade=0。

}

}

否则

Print("OrderSelect返回错误为",GetLastError())。

}

附加的文件:
原因: