如何编码? - 页 39 1...323334353637383940414243444546...347 新评论 ralphronnquist 2007.10.03 02:18 #381 mish 我有片刻的空闲时间,并试图按照我的理解捕捉你的意图。 附加的文件: advicerr.txt 2 kb mish 2007.10.03 22:55 #382 谢谢你 谢谢你,拉尔夫-朗奎斯特 这些功能正是我所需要的,对其他需要同样功能的人来说也是有用的。 我当时被耽搁了,否则我会早点感谢你的,尤其是因为你花了很多精力。 有没有一个简单的方法来改变这个函数在策略测试器中 的工作? 我知道在测试器中只使用一种货币的结果几乎是无用的,只是它大致上模仿了我所需要的,以获得正确的数学,任何帮助都是感激的,我永远不会在短时间内解决代码问题,所以再次感谢你 RonaldRaygun 2007.10.04 01:45 #383 基于DT_ZZ.mq4的EA 我在这个问题上遇到了一点麻烦。 我有DT_ZZ.mq4指标,从我看到的情况来看,它很有希望。我确实知道这个指标是重绘的,我看到它是这样工作的。 如果一个箭头和截面相等,那么就等着柱子收盘,然后相应地买入/卖出。 有谁认为他们能对此有所帮助?(代码贴在下面) //+------------------------------------------------------------------+//| DT_ZZ.mq4 |//+------------------------------------------------------------------+ //由Rosh优化 #property indicator_chart_window #属性 indicator_buffers 3 #属性 indicator_color1 绿色 #属性 indicator_color2 蓝色 #属性 indicator_color3 红色 //---- 指标参数 extern int ExtDepth=12; extern int calculateLevel=2; //---- 指标缓冲区 double zzL[]; double zzH[]; double zz[]; //+------------------------------------------------------------------+ //|自定义指标初始化函数| //+------------------------------------------------------------------+ int init() { // IndicatorBuffers(3)。 //---- 绘图设置 SetIndexStyle(0,DRAW_SECTION); SetIndexStyle(1,DRAW_ARROW); SetIndexStyle(2,DRAW_ARROW); SetIndexArrow(1,159); SetIndexArrow(2,159); //---- 指标缓冲区的映射 SetIndexBuffer(0,zz); SetIndexBuffer(1,zzH); SetIndexBuffer(2,zzl); SetIndexEmptyValue(0,0.0)。 SetIndexEmptyValue(1,0.0); SetIndexEmptyValue(2,0.0); //---- 指标短名称 IndicatorShortName("DT_ZZ("+ExtDepth+")")。 //---- 初始化完成 返回(0)。 } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { int i,shift,pos,lasthighpos,lastlowpos,curhighpos,curlowpos; 双重curlow,curhigh,lasthigh,lastlow。 双重min, max; int counted_bars=IndicatorCounted()。 如果(counted_bars==0) { ArrayInitialize(zz,0.0)。 ArrayInitialize(zzl,0.0); ArrayInitialize(zzH,0.0)。 lasthighpos=Bars; lastlowpos=Bars; lastlow=Low;lasthigh=High。 Print("limit=",Bars-ExtDepth); for(shift=Bars-ExtDepth; shift>=0; shift--) { curlowpos=Lowest(NULL,0,MODE_LOW,ExtDepth,shift)。 curlow=Low[curlowpos]; curhighpos=Highest(NULL,0,MODE_HIGH,ExtDepth,shift)。 curhigh=High[curhighpos]。 //------------------------------------------------ if( curlow>=lastlow ) { lastlow=curlow; } 否则 { //???????? 如果( lasthighpos>curlowpos ) { zzL[curlowpos]=curlow。 ///* min=100000; pos=lasthighpos; for(i=lasthighpos; i>=curlowpos; i--) { 如果(zzL==0.0)继续。 如果(zzL<min) { min=zzL; pos=i; } zz=0.0。 } zz[pos]=min; //*/ } lastlowpos=curlowpos; Lastlow=curlow; } //---高 if( curhigh<=lasthigh ) { lasthigh=curhigh; } 否则 { // ????????? 如果( lastlowpos>curhighpos ) { zzH[curhighpos]=curhigh。 ///* max=-100000; pos=lastlowpos; for(i=lastlowpos; i>=curhighpos; i--) { 如果(zzH==0.0)继续。 如果(zzH>max) { max=zzH; pos=i; } zz=0.0。 } zz[pos]=max。 //*/ } lasthighpos=curhighpos; lasthigh=curhigh; } zz[0]=Close[0]; } //---------------------------------------------------------------------- } 否则 { int pos2; i=0; while (pos2<calculateLevel && i<Bars-1) { if (zz!=0 && (zzH!=0||zzL!=0)) pos2++; i++; } pos2=i-1。 for (i=pos2-1;i>=0;i--) { zzH=0。 zzL=0。 zz=0。 } 如果(zzH[pos2]!=0) { lasthighpos=pos2; lasthigh=High[pos2]; lastlowpos=Lowest(NULL,0,MODE_LOW,ExtDepth,pos2)。 lastlow=Low[lastlowpos]。 } 否则 { lastlowpos=pos2; Lastlow=Low[pos2]; lasthighpos=Highest(NULL,0,MODE_HIGH,ExtDepth,pos2); lasthigh=High[lasthighpos]。 } //------------------------- ????????? ?????? Print("limit=",pos2-1); for(shift=pos2-1; shift>=0; shift--) { curlowpos=Lowest(NULL,0,MODE_LOW,ExtDepth,shift)。 curlow=Low[curlowpos]。 curhighpos=Highest(NULL,0,MODE_HIGH,ExtDepth,shift)。 curhigh=High[curhighpos]。 //------------------------------------------------ if( curlow>=lastlow ) { lastlow=curlow; } 否则 { //???????? 如果( lasthighpos>curlowpos ) { zzL[curlowpos]=curlow。 ///* min=100000; pos=lasthighpos; for(i=lasthighpos; i>=curlowpos; i--) { 如果(zzL==0.0)继续。 如果(zzL<min) { min=zzL; pos=i; } zz=0.0。 } zz[pos]=min; //*/ } lastlowpos=curlowpos; Lastlow=curlow; } //---高 if( curhigh<=lasthigh ) { lasthigh=curhigh; } 否则 { // ????????? 如果( lastlowpos>curhighpos ) { zzH[curhighpos]=curhigh。 ///* max=-100000; pos=lastlowpos; for(i=lastlowpos; i>=curhighpos; i--) { 如果(zzH==0.0)继续。 如果(zzH>max) { max=zzH; pos=i; } zz=0.0。 } zz[pos]=max。 //*/ } lasthighpos=curhighpos; lasthigh=curhigh; } } //------------------------- ????????? ?????? zz[0]=Close[0]。 } return(0); } //+------------------------------------------------------------------+ mish 2007.10.04 04:10 #384 这是否可以改变4个策略测试器? 拉尔夫.朗奎斯特 慷慨地给我提供了一个伟大的功能,许多人可能从需要它的使用中受益。 我的问题是,因为我目前在编程方面很差劲,我似乎无法改变它的4策略测试器。 为了测试的目的,只有一种货币是令人满意的,只是为了在不同的情况下用不同的货币进行交易的数学计算。 是否有可能改变拉尔夫的工作以适应这种需要。 谢谢你 附加的文件: ralph.txt 2 kb ralphronnquist 2007.10.04 05:20 #385 原则上,你只需要将 "EURCHF "字符串改为 "EURUSD"。也就是说,做多 "EURUSD "和做空 "EURUSD"。 mish 2007.10.04 05:27 #386 我已经试过了 谢谢你的回答,但我已经试过了,无济于事。你提供的代码让我和我的女朋友知道了我们对编程的了解是多么的少! 非常感谢您 ralphronnquist 2007.10.04 05:58 #387 嗯。我唯一能看到的 "坏处 "是测试 "v == cut",它比较两个双数是否相等。也许只看完整的美元数额效果更好,因此将 "euprofit"、"ecprofit"、"cut "和 "v "改为 "int "类型? NTrader 2007.10.04 08:57 #388 NTrader: 琐碎的问题。我第一次写一个新的个人指标。我无法查看我在start{} 方法中使用Print("...")命令编写的日志。我在哪里可以查看MetaTrader 4上的日志? 好的,我使用Comment() 命令... spiritbreezer 2007.10.04 08:57 #389 我是小飞象 大家好 对于像我这样对编程一无所知的人来说,这是一个伟大的主题。它有许多有用的信息和许多小的代码片段,我可以复制和使用。 我希望有人能帮我解决这个问题。我想做一个基于价格的EA。我应该在代码中输入什么来告知以下情况。 1)我想让EA在小时图上看20:00的价格,看看它与100sma的关系是什么。 2)如果价格高于100sma,我希望它在某个水平上开出2个买单。 3)这些水平是基于16:00蜡烛图的收盘价,所以如果16:00的蜡烛图是1.2000,我希望它在1.1120和1.2080打开一个买单。 我已经制定了止损点、追踪止损点和盈利水平等,所有的代码都来自于这篇报道。所以我感谢那些发布这些代码的人。I 如果有人能在这里帮助我,我将永远感激不尽。 衷心的问候 苏珊 [删除] 2007.10.04 09:12 #390 帮助 大家好 我试图创建一个EA,但我得到了以下错误信息。 '\end_of_program' - 结尾括号'}' 预期 C:\...\My_First_EA.mq4(96,1) 我双击它,到了那一行,然后用前面的开端括号检查 它,仍然不知道我在哪里犯了错误。 这是我尝试的第二个EA,有同样的错误信息,基于同一个指标。 谢谢你。 1...323334353637383940414243444546...347 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
mish
我有片刻的空闲时间,并试图按照我的理解捕捉你的意图。
谢谢你
谢谢你,拉尔夫-朗奎斯特
这些功能正是我所需要的,对其他需要同样功能的人来说也是有用的。
我当时被耽搁了,否则我会早点感谢你的,尤其是因为你花了很多精力。
有没有一个简单的方法来改变这个函数在策略测试器中 的工作? 我知道在测试器中只使用一种货币的结果几乎是无用的,只是它大致上模仿了我所需要的,以获得正确的数学,任何帮助都是感激的,我永远不会在短时间内解决代码问题,所以再次感谢你
基于DT_ZZ.mq4的EA
我在这个问题上遇到了一点麻烦。
我有DT_ZZ.mq4指标,从我看到的情况来看,它很有希望。我确实知道这个指标是重绘的,我看到它是这样工作的。
如果一个箭头和截面相等,那么就等着柱子收盘,然后相应地买入/卖出。
有谁认为他们能对此有所帮助?(代码贴在下面)
//| DT_ZZ.mq4 |
//+------------------------------------------------------------------+
//由Rosh优化
#property indicator_chart_window
#属性 indicator_buffers 3
#属性 indicator_color1 绿色
#属性 indicator_color2 蓝色
#属性 indicator_color3 红色
//---- 指标参数
extern int ExtDepth=12;
extern int calculateLevel=2;
//---- 指标缓冲区
double zzL[];
double zzH[];
double zz[];
//+------------------------------------------------------------------+
//|自定义指标初始化函数|
//+------------------------------------------------------------------+
int init()
{
// IndicatorBuffers(3)。
//---- 绘图设置
SetIndexStyle(0,DRAW_SECTION);
SetIndexStyle(1,DRAW_ARROW);
SetIndexStyle(2,DRAW_ARROW);
SetIndexArrow(1,159);
SetIndexArrow(2,159);
//---- 指标缓冲区的映射
SetIndexBuffer(0,zz);
SetIndexBuffer(1,zzH);
SetIndexBuffer(2,zzl);
SetIndexEmptyValue(0,0.0)。
SetIndexEmptyValue(1,0.0);
SetIndexEmptyValue(2,0.0);
//---- 指标短名称
IndicatorShortName("DT_ZZ("+ExtDepth+")")。
//---- 初始化完成
返回(0)。
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
int i,shift,pos,lasthighpos,lastlowpos,curhighpos,curlowpos;
双重curlow,curhigh,lasthigh,lastlow。
双重min, max;
int counted_bars=IndicatorCounted()。
如果(counted_bars==0)
{
ArrayInitialize(zz,0.0)。
ArrayInitialize(zzl,0.0);
ArrayInitialize(zzH,0.0)。
lasthighpos=Bars; lastlowpos=Bars;
lastlow=Low;lasthigh=High。
Print("limit=",Bars-ExtDepth);
for(shift=Bars-ExtDepth; shift>=0; shift--)
{
curlowpos=Lowest(NULL,0,MODE_LOW,ExtDepth,shift)。
curlow=Low[curlowpos];
curhighpos=Highest(NULL,0,MODE_HIGH,ExtDepth,shift)。
curhigh=High[curhighpos]。
//------------------------------------------------
if( curlow>=lastlow ) { lastlow=curlow; }
否则
{
//????????
如果( lasthighpos>curlowpos )
{
zzL[curlowpos]=curlow。
///*
min=100000; pos=lasthighpos;
for(i=lasthighpos; i>=curlowpos; i--)
{
如果(zzL==0.0)继续。
如果(zzL<min) { min=zzL; pos=i; }
zz=0.0。
}
zz[pos]=min;
//*/
}
lastlowpos=curlowpos;
Lastlow=curlow;
}
//---高
if( curhigh<=lasthigh ) { lasthigh=curhigh; }
否则
{
// ?????????
如果( lastlowpos>curhighpos )
{
zzH[curhighpos]=curhigh。
///*
max=-100000; pos=lastlowpos;
for(i=lastlowpos; i>=curhighpos; i--)
{
如果(zzH==0.0)继续。
如果(zzH>max) { max=zzH; pos=i; }
zz=0.0。
}
zz[pos]=max。
//*/
}
lasthighpos=curhighpos;
lasthigh=curhigh;
}
zz[0]=Close[0];
}
//----------------------------------------------------------------------
}
否则
{
int pos2;
i=0;
while (pos2<calculateLevel && i<Bars-1)
{
if (zz!=0 && (zzH!=0||zzL!=0)) pos2++;
i++;
}
pos2=i-1。
for (i=pos2-1;i>=0;i--)
{
zzH=0。
zzL=0。
zz=0。
}
如果(zzH[pos2]!=0)
{
lasthighpos=pos2;
lasthigh=High[pos2];
lastlowpos=Lowest(NULL,0,MODE_LOW,ExtDepth,pos2)。
lastlow=Low[lastlowpos]。
}
否则
{
lastlowpos=pos2;
Lastlow=Low[pos2];
lasthighpos=Highest(NULL,0,MODE_HIGH,ExtDepth,pos2);
lasthigh=High[lasthighpos]。
}
//------------------------- ????????? ??????
Print("limit=",pos2-1);
for(shift=pos2-1; shift>=0; shift--)
{
curlowpos=Lowest(NULL,0,MODE_LOW,ExtDepth,shift)。
curlow=Low[curlowpos]。
curhighpos=Highest(NULL,0,MODE_HIGH,ExtDepth,shift)。
curhigh=High[curhighpos]。
//------------------------------------------------
if( curlow>=lastlow ) { lastlow=curlow; }
否则
{
//????????
如果( lasthighpos>curlowpos )
{
zzL[curlowpos]=curlow。
///*
min=100000; pos=lasthighpos;
for(i=lasthighpos; i>=curlowpos; i--)
{
如果(zzL==0.0)继续。
如果(zzL<min) { min=zzL; pos=i; }
zz=0.0。
}
zz[pos]=min;
//*/
}
lastlowpos=curlowpos;
Lastlow=curlow;
}
//---高
if( curhigh<=lasthigh ) { lasthigh=curhigh; }
否则
{
// ?????????
如果( lastlowpos>curhighpos )
{
zzH[curhighpos]=curhigh。
///*
max=-100000; pos=lastlowpos;
for(i=lastlowpos; i>=curhighpos; i--)
{
如果(zzH==0.0)继续。
如果(zzH>max) { max=zzH; pos=i; }
zz=0.0。
}
zz[pos]=max。
//*/
}
lasthighpos=curhighpos;
lasthigh=curhigh;
}
}
//------------------------- ????????? ??????
zz[0]=Close[0]。
}
return(0);
}
//+------------------------------------------------------------------+这是否可以改变4个策略测试器?
拉尔夫.朗奎斯特
慷慨地给我提供了一个伟大的功能,许多人可能从需要它的使用中受益。
我的问题是,因为我目前在编程方面很差劲,我似乎无法改变它的4策略测试器。
为了测试的目的,只有一种货币是令人满意的,只是为了在不同的情况下用不同的货币进行交易的数学计算。
是否有可能改变拉尔夫的工作以适应这种需要。
谢谢你
原则上,你只需要将 "EURCHF "字符串改为 "EURUSD"。也就是说,做多 "EURUSD "和做空 "EURUSD"。
我已经试过了
谢谢你的回答,但我已经试过了,无济于事。你提供的代码让我和我的女朋友知道了我们对编程的了解是多么的少!
非常感谢您
嗯。我唯一能看到的 "坏处 "是测试 "v == cut",它比较两个双数是否相等。也许只看完整的美元数额效果更好,因此将 "euprofit"、"ecprofit"、"cut "和 "v "改为 "int "类型?
琐碎的问题。我第一次写一个新的个人指标。我无法查看我在start{} 方法中使用Print("...")命令编写的日志。我在哪里可以查看MetaTrader 4上的日志?
好的,我使用Comment() 命令...
我是小飞象
大家好
对于像我这样对编程一无所知的人来说,这是一个伟大的主题。它有许多有用的信息和许多小的代码片段,我可以复制和使用。
我希望有人能帮我解决这个问题。我想做一个基于价格的EA。我应该在代码中输入什么来告知以下情况。
1)我想让EA在小时图上看20:00的价格,看看它与100sma的关系是什么。
2)如果价格高于100sma,我希望它在某个水平上开出2个买单。
3)这些水平是基于16:00蜡烛图的收盘价,所以如果16:00的蜡烛图是1.2000,我希望它在1.1120和1.2080打开一个买单。
我已经制定了止损点、追踪止损点和盈利水平等,所有的代码都来自于这篇报道。所以我感谢那些发布这些代码的人。I
如果有人能在这里帮助我,我将永远感激不尽。
衷心的问候
苏珊
帮助
大家好
我试图创建一个EA,但我得到了以下错误信息。
'\end_of_program' - 结尾括号'}' 预期 C:\...\My_First_EA.mq4(96,1)
我双击它,到了那一行,然后用前面的开端括号检查 它,仍然不知道我在哪里犯了错误。
这是我尝试的第二个EA,有同样的错误信息,基于同一个指标。
谢谢你。