//+------------------------------------------------------------------+//| Agent86_5min.mq4 |//| Unfinished POS slate |//| See progress notes below |
//+------------------------------------------------------------------+#property copyright "Unfinished POS slate by Agent86"//---- input parametersexterndouble TakeProfit=20.0;
externdouble Lots=0.1;
externdouble StopLoss=10.0;
externint MagicNumber=123486;
double val1;
double val2;
bool traded = false;
//++++ These are adjusted for 5 digit brokers.int pips2points; // slippage 3 pips 3=points 30=pointsdouble pips2dbl; // Stoploss 15 pips 0.0015 0.00150intDigits.pips; // DoubleToStr(dbl/pips2dbl, Digits.pips)// OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
if (Digits == 5 || Digits == 3)
{ // Adjust for five (5) digit brokers.
pips2dbl = Point*10; pips2points = 10; Digits.pips = 1;
}
else
{
pips2dbl = Point; pips2points = 1; Digits.pips = 0;
}
// OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl//---- //----return(0);
}
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//---- //----return(0);
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
int i=0;
int ticket,total,result;
total = OrdersTotal();
val1=iFractals(NULL, 0, MODE_UPPER,3);
val2=iFractals(NULL, 0, MODE_LOWER,3);
if(val1 > 0 && traded == false)
{
// in the absence of an && indicator above I get continous print statements// with indicator added && indicator above, then it prints A and B once as it should ???// I need to work this out so it won't print all the time aka trade all the time// A and B first values seems to initialize the whole block// just a reminder that they time stamps coordinate after this FYI// now work on C retrace and possibly signals// add options for user to select some candle patterns// add options to select indicators// add bells and whistles to make things fun// alerts,sounds,maybe poppup video animation or somethingdouble B = val1;
Print(B, " B high");
if(val2==0)
{
for (i=0; val2==0; i++)
{
val2=iFractals(NULL, 0, MODE_LOWER, i);
double A = val2;
if(A!=0)
{
Print(A, " A low");
}
}
}
traded=true;
}
if(val2 > 0 && traded == true)
{
B = val2;
Print(B, " B low");
if(val1==0)
{
for (i=0; val1==0; i++)
{
val1=iFractals(NULL, 0, MODE_UPPER, i);
A = val1;
if(A!=0)
{
Print(A, " A high");
}
}
}
traded=false;
}
return(0);
}
//+------------------------------------------------------------------+
让我们说我用shift 3声明val1
,然后循环当然是shift i
如果我在循环之外引用val1,我是在说val1全局还是val1循环?
我想我在想,我是否应该为我的if语句添加一个单独的全局分形,如val3和val4或其他东西
我在这里有点卡住了,但看起来ABCD方案至少有了一点进展
总之,这里是代码,有什么想法?
所以A将是之前的低点,而val1应该是当前的移位3,a和val2也是如此
我必须再重新测试一下,以确定A和a指的是正确的值,因为我加入了!=0语句,这样它就不会打印空值了。
乍一看似乎没有问题,但我需要重新确认一下
,总之要重述一下。
我的if(语句)中的val1是否正确指的是正确的条件,还是我需要一个完全不同的iFractal来指的是shift 3
我真的无法判断它是否工作正常,它似乎在工作,但有些东西似乎不对,我无法退出我的手指来。
请指教
谢谢
虽然这真的不是一个指标性的话题了,但我应该把它移到一个新的话题上吗?
如果我使用像这样的东西
让我们说我用shift 3声明val1
然后循环当然是shift i
如果我在循环外引用val1,我是在谈论val1全局还是val1循环?
我想知道我是否应该为我的if语句添加一个单独的全局分形,如val3和val4或其他东西。
val1和val2 是在全局范围内声明的,i 是在start()中本地声明的。
循环内或循环外的val1和val2都有最后分配给它们的值 ......这发生在循环之前,然后这些值可能在 循环内 被改变 ......一旦循环退出,这些值就是它们现在的样子,并保持这种状态直到下次调用start(),然后它们被重置,然后可能在循环内被修改 ......等等。
val1和val2 是在全局范围内声明的,i 是在start()中本地声明的。
循环内部或外部的val1和val2具有最后分配给它们的值 ......这发生在循环之前,然后这些值可能在 循环内 被改变 ......一旦循环退出,这些值就是它们现在的样子,直到下次调用start(),然后它们被重置,然后可能在循环内被修改 ......等等。
我可以尝试在循环中追寻这些值,然后再次重新声明val1和val2=iFractal,,3。重置事情,但只是在我声明A=val2和a=val1之后,这样我就有了这些值,如果我有这个权利的话,希望是我之前的分形。
或者我可以在循环外重新声明val1和val2,但我不想丢失A或a的值,所以我想我必须在适当的时候解决这个问题。
我也可能是把这一切都弄错了,但没有关系。总得从某个地方开始,所以我现在选择了这个;当我获得更多经验时,我可以调整它。
谢谢你的帮助我想我应该把这些改为val3和val4,以便使用实际的iFractal进行交易,并且只参考和使用(A)和(a)来参考我以前的分形。
我将继续努力
谢谢
经过几天的思考和尝试,我认为我现在有了一个更好的工作代码,虽然不是很完美,但也在不断进步。
所以我有我的A和B值,当一个指标语句被放置在最初的if(语句&&指标)中时,这些值会被打印一次,例如MACD更快>更慢或一些类似的指标语句。
所以我只得到我想要的A和B。
我不知道为什么当指标选项从我的if(语句)中拿出来时,会打印多次。
总之,我对这个ABCD类型的方案越来越接近了,它也可以用于其他指标,而不仅仅是分形等,供以后 参考。
请指教
谢谢
这可能对你有所帮助。这是一个访问最后一个分形和移位的指标,所以你可以用它来计算你的ABCD。
这将提供上层分 形。把""改成 "L "表示下层分形。
将给出最近一次分形之前的分形。
这可能对你有所帮助。这是一个访问最后一个分形和移位的指标,所以你可以用它来计算你的ABCD。
这将提供上层分形。把""改成 "L "表示下层分形。
将给出最近一次分形之前的分形。
在我在这个主题中的最新代码之前,我在一些帮助下研究出了一些不同的(for)语句,这也是我能够在缓冲区中画出我想要的东西的一个指标,然而这给我带来了另一个问题,即试图提取数值,并且只打印一次这些数值,以便使用或参考。
因为这些不同的for语句给我带来了问题,而且这些问题与你发布的代码相似。我一直无法在不不断打印数值的情况下获得这些数值,而这些数值每次都会变成 "真"。
我已经解决了一些问题,但仍然没有真正学会如何在一个条件为真时停止。
我在你的代码中看到一个可能有帮助的东西,那就是静态数据块,我以前只用过一次,只在新的条形图和新的条形图时间出现时才引用这个条件。
这一部分可能对我的工作有帮助。尽管我目前的代码确实产生了当前的分形和之前的分形,但目前它是有效的
我唯一的问题是,一旦条件为真,它就会连续打印出声明,这可能是好的,但这意味着一旦我达到这个点,它也可能连续进行交易。
也许我需要更多关于如何使用iCustom指标 的经验,这可能会解决我的很多问题,但我的学习还没到那个程度。
我会再审查一下这段代码,还有EMPTY_VALUE部分。现在我看到这一点在使用,我也可以从中学习。以前有人提出过这个建议,但我一直不明白如何使用它。
我会继续努力的
谢谢你的帮助
,然后它就工作了,而且只给出我想要的东西,即打印A低点、B高点,然后和/或B低点和A高点
。
但是,如果我把这两个if语句中的faster > slower和faster < slower拿掉,那么我注意到它永远不会打印出A高点,也会连续打印出其他的高点,这让我感到很困惑。
我将继续努力,我确信我需要让它在EA中没有其他指标语句的情况下打印一次语句,这样我就知道指标不会干扰代码的ABCD部分 。
我认为你的问题在于你没有重置val1和val2。所以一旦你找到了高点和最后的低点,你就需要重置它们。
希望这能有所帮助。