问吧! - 页 163

 
jizhong68:
亲爱的Guru。

我正在使用一个二维数组,例如,ZigZag[2][100]。 我使用以下函数。

ArraySort(ZigZag,WHOLE_ARRAY,0,MODE_DESCEND)。

但它似乎既不按第一维排序,也不按第二维排序。有谁能帮助我吗?

非常感谢

MQL文档说ArraySort是 按第一维排序的,如果你没有得到正确的结果,请公布你的数组输入和输出。

编写一个简单的quicksort函数不会花费太多时间。创建一个新的数组,存储排序后的结果,然后做一个for循环来查找ZigZag,并将第二维复制过来。可能效率不高,但可以完成任务。

 

这里是代码

beckham.is.619:
MQL文档指出ArraySort按第一维排序,如果你没有得到正确的结果,请发布你的数组的输入和输出。 编写一个简单的quicksort函数不会花费太多时间。创建一个新的数组,存储排序后的结果,然后做一个for循环来查找ZigZag并复制第二维。可能效率不高,但它能完成工作。

谢谢你的答复。

我想在图表中计算并显示支撑线和阻力线,其算法是在历史上找到100个ZigZag并计算每个ZigZag的权重。对于每个ZigZag,我试图搜索所有的数组,以找到与该ZigZag相近的5个点的其他ZigZag的数量,例如,如果某个ZigZag是1.5000,那么我想找到与这两个ZigZag的距离在5个点以内的所有其他ZigZag,如果是这样,我给这个ZigZag增加1个计数,我为所有100个ZigZag这样做。

当我完成这些工作后,我试图按照计数器的维度对所有这些ZigZag进行排序,正如你在指标中所发现的那样。但我试了很多次,打印ArraySort(0)函数被删除前后的值。

我把这个指标贴出来供你参考。

谢谢。

以下是指标的代码。

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

//| 风险管理和支持.mq4。

//| Copyright ?200 | |

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

#property copyright "Copyright ?2006, Nick Bilak"

//由t_david在2007年初的某个时候黑进了一个频道ind.

#property indicator_chart_window

外部int Gap = 5;

Extern int Depth = 24;

extern int Deviation=5;

extern int BackStep=3;

Extern int BackStart=288;

int ZigN=100;

double ZigZag[2][100];

int ShowBars = 500;

int dist=24;

int init() {

返回(0)。

}

int start() {

int k,i,j,limit,hhb,llb;

int counted_bars=IndicatorCounted()。

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

如果(counted_bars>0) counted_bars--。

ShowBars=Bars-counted_bars;

查找ZigZag()。

阻力支持()。

// for(i=0;i<10;i++)

{

// ObjectDelete("P_Line")。

// ObjectCreate("P_Line", OBJ_HLINE,0, CurTime(), Close[0])。

ObjectDelete("RS0");

ObjectCreate("RS0",OBJ_HLINE,0,CurTime(),ZigZag[1][0])。

ObjectDelete("RS1");

ObjectCreate("RS1",OBJ_HLINE,0,CurTime(),ZigZag[1][1])。

ObjectDelete("RS2");

ObjectCreate("RS2",OBJ_HLINE,0,CurTime(),ZigZag[1][2])。

ObjectDelete("RS3");

ObjectCreate("RS3",OBJ_HLINE,0,CurTime(),ZigZag[1][3])。

ObjectDelete("RS4")。

ObjectCreate("RS4",OBJ_HLINE,0,CurTime(),ZigZag[1][4])。

ObjectDelete("RS5")。

ObjectCreate("RS5",OBJ_HLINE,0,CurTime(),ZigZag[1][5])。

ObjectDelete("RS6");

ObjectCreate("RS6",OBJ_HLINE,0,CurTime(),ZigZag[1][6])。

ObjectDelete("RS7");

ObjectCreate("RS7",OBJ_HLINE,0,CurTime(),ZigZag[1][7])。

ObjectDelete("RS8")。

ObjectCreate("RS8",OBJ_HLINE,0,CurTime(),ZigZag[1][8])。

ObjectDelete("RS9")。

ObjectCreate("RS9",OBJ_HLINE,0,CurTime(),ZigZag[1][9])。

}

// if (ShowBars >= Bars) ShowBars = Bars;

/*

for (i=0;i<ShowBars;i++) {

b1=0;

b2=0;

b3=0;

b4=0;

b5=0;

b6=0;

b8=0;

hhb = iHighest(Symbol(),0,MODE_HIGH,dist,i-dist/2);

llb = iLowest(Symbol(),0,MODE_LOW,dist,i-dist/2)。

如果(i==hhb)

b3=High+SignalGap*Point。

如果(i==llb)

b4=Low[llb]-SignalGap*Point。

b1=高;//+SignalGap*Point。

b2=Low[llb];//-SignalGap*Point。

*/

return(0);

}

//找到十个ZigZag。

空白的FindZigZag()

{

int i=BackStart;

int ii=0;

int m=0;

int n=0。

while(ii<ZigN)

{

如果(iCustom(NULL,0, "zigzag",Depth,Deviation,BackStep,0,i)>0.1) /1=高

{

ZigZag[0]=0。

ZigZag[1]=iCustom(NULL,0, "zigzag",Depth,Deviation,BackStep,0,i) 。

// Print("ZigZag: ",ZigZag[1])。

ii++;

}

i++;

}

}

// 寻找阻力和支撑

无效的阻力支持()

{

int i,n;

for(i=0;i<ZigN;i++)

{

for(n=0;n<ZigN;n++)

{

如果(MathAbs(ZigZag[1]-ZigZag[1][n])<Point*Gap)

{

ZigZag[0]++。

}

// Print(i+":ZigNumber: "+ZigZag[0]+" ZigZag: "+ZigZag[1])。

}

// 打印("结束")。

}

ArraySort(ZigZag,WHOLE_ARRAY,0,MODE_DESCEND)。

for(i=0;i<ZigN;i++)

{

// Print(i+":ZigNumber: "+ZigZag[0]+" ZigZag: "+ZigZag[1])。

}

// 打印("结束")。

}

 

我可以问她一些关于MQL4的问题吗?

你好,来自柏林。

我是这个论坛的新成员,读过Coders` guru的MQL4课程。非常感谢您的教导!现在我想尝试一些简单的程序,我已经研究了 ,为什么MA线不会显示在我的主图表中?谢谢你的帮助。

#property indicator_chart_window

#property indicator_color1 Red

extern int Period_MA = 21;

bool Fact_Up = true;

bool Fact_Dn = true;

int start()

{

双重MA。

MA=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0)。

如果(Bid > MA && Fact_Up == true)

{

Fact_Dn = true。

Fact_Up = false;

Alert("Price is above MA(",Period_MA,").")。

}

如果(Bid < MA && Fact_Dn == true)

{

Fact_Up = true;

Fact_Dn = false;

Alert("Price is below MA(",Period_MA,").");

}

return(0);

}

 

你好。

我正在研究一个自定义指标的想法。我需要知道这在脚本中是否可行。

MT4能在任何时候识别我的鼠标下的蜡烛吗?所以我想在某个蜡烛的开盘或收盘时画一条水平线(我通过点击或将鼠标悬停在其上方选择),这可能吗?

我找不到任何有关这方面的信息。

这将有很大帮助,谢谢

 

EAs的订单/交易经理

你们好。

有没有人熟悉用于EA的订单/交易管理的MQ4库?我主要对以下两个功能感兴趣。

1.放置虚拟止损单: 与其使用OrderSend(...)应用止损单,不如使用MyOrderSend(...),参数相同,管理器将处理一切,同时跟踪价格,并在价格触及止损时放置市场订单。

这样做的主要目的是为了克服不必要的STOPLEVEL负担,但它也允许 "影子 "订单。

2.2.经理人将收集待定、执行和终止订单的状态和统计数据。利用这些信息,人们可以实现花哨的MM策略和花哨的止损策略(例如,一个实盘头寸的价内次数可以用于保值或止损机制)。

我已经搜索了很久,所以我不指望这样一个库的整体存在,但如果你熟悉部分解决方案和相关的代码片段,那就太好了。

干杯。

特伦迪克

 

EAs的订单/交易经理

我刚刚发现,在mql5中开发了一个非常好的订单管理器,允许对冲仓位。见paulsfxrandomwalk blogspot(还不允许发布链接)。

不是完整的,但是非常好的一段代码。

把它翻译成mql4应该不容易,但还是有可能的,因为我们必须把c++的OOP代码降级到极其有限的mql4。这似乎是一个很大的浪费

所以我对你的链接的呼吁仍在进行...

 

图表上的MA线

ssh95:
你好,来自柏林。

我是这个论坛的新成员,已经阅读了Coders` guru的MQL4课程。非常感谢您的教导!现在我想尝试一些简单的程序,我已经研究了 ,为什么MA线不会显示在我的主图上?谢谢你的帮助。

#property indicator_chart_window

#property indicator_color1 Red

extern int Period_MA = 21;

bool Fact_Up = true;

bool Fact_Dn = true;

int start()

{

双重MA。

MA=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0)。

如果(Bid > MA && Fact_Up == true)

{

Fact_Dn = true。

Fact_Up = false;

Alert("Price is above MA(",Period_MA,").")。

}

如果(Bid < MA && Fact_Dn == true)

{

Fact_Up = true;

Fact_Dn = false;

Alert("Price is below MA(",Period_MA,").");

}

return(0);

}

你好,Berliner。

在你上面的代码中,似乎缺少在图表上绘制MA线的程序。

在这个TSD论坛上快速搜索一下,有很多MA指标的好例子,你可以看一下代码,学习如何在图表上画出MA线。

祝你好运......并继续学习!

罗伯特

 

MTF指标的刷新问题

你好。

我需要关于这个指标的帮助。它是MTF MACD斜率,但它在刷新时有一个问题,我必须切换TF来纠正它。

我已经尝试改变

limit=Bars-counted_bars;改为 limit=Bars-counted_bars/Period()。

并加入Refreshrates()。

但没有结果。

对不起,我必须把代码上传到.mql中,试着用php标签上传,但它太长了。

我也把图片上传到MTF线程

谢谢大家。

附加的文件:
 
codersguru:
大家好。

我收到很多私人信息,要求我帮助处理一些代码。

在这里,您可以发布与MQL4有关的问题,我会尽力回答。

Codesguru。

我完全没有编程方面的知识。我需要你或任何人帮助我,在这个execute_line indi上设置报警和警报(作为外部指标)。

请先谢谢你。

干杯,Terry

附加的文件:
 

Waddah Attar黄牛

你好!

我发现了一个有趣的指标,是以剥头皮为导向的。

我想对它进行回测,但它在几天后没有打印任何条形图。

你能不能看看在代码中必须编辑什么才能使它打印出几千个条形图?如果有一个选项可以在元编辑器中输入一个数字,请告诉我。我找不到任何东西。

谢谢你的时间

Xander

waddah_attar_scalping.ex4

waddah_attar_scalping.mq4

附加的文件: