//+------------------------------------------------------------------+//| Check for open order conditions |//+------------------------------------------------------------------+void CheckForOpen()
{
double ma;
int res;
//---- go trading only for first tiks of new barif(Volume[0]>1) return;
//---- get Moving Average
ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---- sell conditionsif(Open[1]>ma && Close[1]<ma)
{
res=OrderSend(Symbol(),OP_SELL,Lots,Bid,30,Bid+Stoploss*Point,Bid-Takeprofit*Point,"",MAGICMA,0,Red);
return;
}
//---- buy conditionsif(Open[1]<ma && Close[1]>ma)
{
res=OrderSend(Symbol(),OP_BUY,Lots,Ask,30,Ask-Stoploss*Point,Ask+Takeprofit*Point,"",MAGICMA,0,Blue);
return;
}
//----
}
if (IncreaseTP)
{
LastTakeProfitS = MathRound(LastTakeProfitS+LastTakeProfitS/100*PercentTakePr); // PercentTakePr = 10; (десять процентов) эту строку считает
TStartS = MathRound(TStartS+TStartS/10*PercentTakePr); // а вот эту и все, которые ниже - нет
TStop.Sell = MathRound(TStop.Sell+TStop.Sell/10*PercentTakePr); // ... причём, если деление на 100 заменить на деление на 10,
TStartLastPosS = MathRound(TStartLastPosS+TStartLastPosS/10*PercentTakePr); // ... то начинает считать и эти строки, но уже, естественно...if (TStop.SellLP<=Level_new+spread) TStop.SellLP=Level_new+spread; // ... рассчёт становится неверным...
}
if (IncreaseTP)
{
LastTakeProfitS = MathRound(LastTakeProfitS+LastTakeProfitS/100*PercentTakePr); // PercentTakePr = 10; (десять процентов) эту строку считает
TStartS = MathRound(TStartS+TStartS/100*PercentTakePr); // а вот эту и все, которые ниже - нет
TStop.Sell = MathRound(TStop.Sell+TStop.Sell/10 0*PercentTakePr); // ... причём, если деление на 100 заменить на деление на 10,
TStartLastPosS = MathRound(TStartLastPosS+TStartLastPosS/100*PercentTakePr); // ... то начинает считать и эти строки, но уже, естественно...if (TStop.SellLP<=Level_new+spread) TStop.SellLP=Level_new+spread; // ... рассчёт становится неверным...
}
我们不是在问价时开买吗 ???????
这就是我所写的。"买入订单 按问价开仓"。
但在图表上你看到的是买入价。
这就是我所写的。"买入订单按问价开仓"。
但在图表上你看到的是买入价。
我们不是在Ask ??????? 上开了一个买盘吗?而且不可能有60个点的点差(如果你在缺口之后拿下),如果你在缺口之前拿下......那么欧元的325个点的点差就相当于......。:)
你的照片没有显示点。
你的照片没有显示出这些点。
我总是把这两个价格放在图表上...在终端设置中,我通过F8启用了Ask`ts的显示...。并对之前的帖子中关于价差的内容做了一点纠正--不可能。 。
但问价在条形图中是看不到的。
关于传播。是五位数 的价差吗?如果是,新闻点差扩大+滑点=对你来说是整整6个(60个五位数)点。
但问价在条形图中是看不到的。
关于传播。是五位数的价差吗?如果是,那么新闻的扩展点差+滑点=6个整数(60个五位数)的点。
如果我对你的问题理解正确,你不应该被订单的关闭时间所引导。你必须从开仓信号和开仓的条形图的起点开始。我个人会做的是以下工作。
1) 创建一个日期类型的变量,如果订单成功下达,我将输入Time[0]这个值。
2) 在init()函数中,用 "0 "值初始化这个变量。 我更喜欢明确的初始化,因为在审查代码时更清楚。
3) 当出现开仓条件时,在发送OrderSend(...)请求之前,将该变量的值与Time[0]的值进行比较,如果它们不相等,则发送请求。
4)如果开仓,我将把Time[0]的值存储在同一个变量中。
谢谢你的澄清 - 但你是否认为,与其与Time[0]值进行比较,不如在OrderSend(...)请求之前给这个任务:检查在当前条上是否有一个StopLoss-y收盘?那么,我需要输入相近的StopLoss()函数,它将与我宣布的StopLoss变量一起工作?还是从根本上说,它是不可能的?对我来说很重要的一点是,即使与开仓的参数相吻合,也不能在抓到亏损的柱子上建立新的头寸。
extern double Stoploss =1000;
问题是,时间因素应该最后考虑--很多时候它们会滑落--或者说对命令的解释在某种程度上变成了不同的(含糊不清)。
但问价在条形图中是看不到的。
关于传播。是五位数的价差吗?如果是,那么价差因新闻而扩大+滑点=整整6个(60个五位数)点子
另外,在我看来,可能有一个 "发夹",随后被清理掉了:)),但 "保存在记忆中 "的时间段较小,你不会去...
而关于在历史上测试的问题:
可以一个专家顾问(一个简单的!)。- ...)在同一历史时期,用同样的参数得到完全不同的结果?
在这两次测试之间,我所做的唯一一件事是更新报价档案......而这可能导致这样的结果!?- 然后发现整个故事都是胡说八道!?
谁能告诉我为什么MathRound()表现得很奇怪。大的价值,小的不...
有一个简单的代码用于将一些变量的值增加10%。
计算值被记录下来。如果除了第一行以外的所有行都被10除以,那么这一行就算是100号,没有任何问题。
2010.08.11 19:16:20 2009.01.02 10:34 Sergitas_v1.01 EURUSD,M5: 计算功能:SLs = 11 and TPs = 66,TStartS = 60, TStop.Sell = 20, TStopLastPosS = 60, TStop.SellLP = 25
标记为绿色的是第一行代码中的内容。
但如果你把除以100(应该是这样的)
...那么除了最上面的一行之外,其他所有的行都不计算在内--初始值依然存在,就像没有添加过一样
百分之十。
2010.08.11 19:41:03 2009.01.02 10:34 Sergitas_v1.01 EURUSD,M5: 计算功能:SLs = 11 and TPs = 66,TStartS = 30, TStop.Sell = 10, TStopLastPosS = 30, TStop.SellLP = 15
帮助我了解它是什么,在哪里他妈的...:)