[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 548 1...541542543544545546547548549550551552553554555...652 新评论 Роман 2012.02.06 08:45 #5471 harvest: 先生们,你们能不能给我一个将未结头寸移至盈亏平衡点的函数的例子(在tick上工作),我的专家顾问有一个拖网,这个拖网的开始只是在翻转买入的函数之后。预先感谢你。 请看预告片--Yury Dzyuban的拖网库--特别是如何解决拖网是否只从利润中执行的问题,也就是说,如果变量trlinloss 的值= false,拖网是否在损失区执行。根据这个例子编辑你的拖网函数,就可以了。 附加的文件: trailingfunclib.mq4 59 kb [删除] 2012.02.06 09:12 #5472 朋友们,你们能告诉我为什么经典的马丁不工作了吗?它只打开交易购买!!!。一个月以来,我一直在捣鼓它--零情感!我的心都碎了。它在策略测试器中运行良好,但在演示中却不能。另一个有趣的事情--当我设置T/S和T/P 1000时--它只在买入时打开,而当我设置200时--在买入和卖出时打开...伙计,有什么区别? 以下是代码:请帮助我。 //+------------------------------------------------------------------+ //| StMartin.mq4 | //| Sergey Kodolov | //| 84232676421@mail.ru | //+------------------------------------------------------------------+ #property copyright "Sergey Kodolov" #property link "84232676421@mail.ru" extern int TP = 1000; extern int TS = 1000; extern double lots = 0.1; double volumz; int total,ticket; int slip = 3; int Magic = 7; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,"First order",Magic,0,Yellow); //открываем первый ордер //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- OrderOpenFunction(); //---- return(0); } //+------------------------------------------------------------------+ void OrderOpenFunction() { total = OrdersTotal(); if(total < 1) { OrderSelect(0,SELECT_BY_POS,MODE_HISTORY); volumz = OrderLots(); if(OrderProfit()<0) { if(OrderType() == OP_BUY) { double lot1 = volumz*2; ticket = OrderSend(Symbol(),OP_SELL,lot1,Bid,slip,Ask+TS*Point,Ask-TP*Point,0,Magic,0,Red); } if(OrderType() == OP_SELL) { double lot2 = volumz*2; ticket = OrderSend(Symbol(),OP_BUY,lot2,Ask,slip,Bid-TS*Point,Bid+TP*Point,0,Magic,0,Green); } } if(OrderProfit()>0) { if(OrderType() == OP_BUY) { ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,0,Magic,0,Green); } if(OrderType() == OP_SELL) { ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,0,Magic,0,Red); } } } } Dimka-novitsek 2012.02.06 10:18 #5473 Alp: 然后就变得更加不清楚了。假设我以1,000,000(1,000)美元买入一个欧元(经纪人将其乘以100,结果交易价格为100,000),图表跳升100点,我卖出它们,我以10,000美元的价格加价,以及经纪人的佣金和价差,结果6000美元净收入我口袋。(那么很明显,在销售之后,它将再次下跌100点。)这是胡说八道!!!!。也许它终究会跌到谷底?否则,非常大的玩家会什么都不做就能赚到数十亿美元。 那么我不知道... 总的来说,为了实现明显的价格波动,有必要买入或卖出一个非常大的数额,非常大。对于这样的金额,杠杆不是我的1/200,而是象征性的1/2。嗯,这纯粹是我个人的想法。我可以写这样的胡说八道... Dimka-novitsek 2012.02.06 10:36 #5474 有一件事让我感到惊讶。我之前把代码贴在这里,有一个错误,它帮我解决了,Sepulca也帮了忙,谢谢她,直到现在代码都能用了......但我还是不明白:在第一个循环中,订单选择器选择了一个订单,没有任何错误,然后,当我在另一行选择相同的订单时,在下面,订单选择器显示错误?如果你能,请看一看,我只是好奇。for( i=0;i<=OrdersHistoryTotal();i++){ OrderSelect(i ,SELECT_BY_POS,MODE_HISTORY); if (OrderMagicNumber( )== magic) { if(OrderSymbol()== Symbol()) { current = OrderOpenTime(); Alert ( " current = OrderOpenTime(); ", current);Alert ( " max ", max ); if (current > max) { max = current; ticket = OrderTicket(); Alert ( " ticket = OrderTicket(); ", ticket ); }}}} if (ticket>-1){ OrderSelect( ticket,SELECT_BY_TICKET,MODE_HISTORY);Alert ("SELL Select error HISTORYticket ", GetLastError( ) ) ;Dimka-novitsek: 不可能!为什么不呢?在超额完成任务的时候,并没有任何未结订单!这就是所谓的超额完成任务。也许我不明白。搜索周期也在历史上!这就是我把它赋值给int ticket变量的地方!它发誓,对不起,2012.02.04 11:28:47 2011.12.06 16:35 GMT EURUSD,M30:警告: 卖出选择错误 HISTORYticket 4105当它从MODE_HISTORY到MODE_TRADES?而最重要的是,我在历史上借助于订单选择,选择了相同的订单,而且是先选择的,否则我就不能用它来工作了!没有逻辑!!!!!!,我很震惊。 [删除] 2012.02.06 16:57 #5475 你能告诉我在哪里可以找到这样的EA或脚本吗?有一组订单(9-11)放置在价格的两侧,距离它5-7个点。触发它们的时间是严格限制的。因此,很多时候订单没有被抓住,它们被删除。订单是在清晨放置的,作为一个规则,市场是严重平坦的。我希望第二组订单跟随价格接近其中一个订单组。简单地说,一个带有tp和sld的挂单 跟踪。这可能吗? jurist70 2012.02.06 18:18 #5476 需要帮助! 我在我的EA(事件计数器)里有以下块。 如果(isCloseLastPosByStop()==True) //如果最后一笔订单是由Stop关闭。 {N=N+1。Alert(N, " moose")。}否则N=0。 问题:我如何将数据写入文件(Excel)而不是在屏幕上显示? Roman Kutemov 2012.02.07 09:36 #5477 下午好。 请告知为什么不画箭头,代码。 ObjectCreate("miniDown",OBJ_ARROW, 0, Time[1], Open[1])。 ObjectSet("miniDown", OBJPROP_ARROWCODE, 241)。 ObjectSet("miniDown", OBJPROP_COLOR, Yellow)。 orb 2012.02.07 10:21 #5478 假设欧元兑美元=1.44757,英镑兑美元=1.63366,你希望它们彼此接近。 让我解释一下。 a=GBPUSD/EURUSD=1.12855336874901大约1.12855 。 也就是说,如果我想买入/卖出一种货币,使交易的价值大致相等,那么 我需要买入/卖出 EURUSD*a,但没有这样的手数,所以我的问题是如何实现它,手数计算? 我没有这么多,所以我的问题是如何做到这一点? Artyom Trishkin 2012.02.07 15:36 #5479 T-G: 我想分享计算最大允许手数的函数,考虑到未结头寸,换句话说,使用股本。标准函数计算风险,但如果我有交易,我没有足够的钱来打开它们 我曾经为一个定制的EA写过它。 //+----------------------------------------------------------------------------+ double CorrectLots(double lt, int Part=2) { double ltcorr, Money, MoneyCorr; double dig = MarketInfo(Symbol(),MODE_DIGITS); double MaxLot = MarketInfo(Symbol(),MODE_MAXLOT); double MinLot = MarketInfo(Symbol(),MODE_MINLOT); double StpLot = MarketInfo(Symbol(),MODE_LOTSTEP); double OneLot = MarketInfo(Symbol(),MODE_MARGINREQUIRED); double TradeMrg = NormalizeDouble(AccountFreeMargin()/Part,dig); // Свободные средства, разрешенные к торговле lt=MathAbs(lt); ltcorr=lt; // Зададим начальное значением ltcorr равным значению lt if (lt>=MaxLot) ltcorr=MaxLot; // Проверим превышение допустимых ... if (lt<=MinLot) ltcorr=MinLot; // ... значений лота Money=lt*OneLot; // Вычисляем стоимость открываемой позы if (Money<TradeMrg) return(ltcorr); // Если свободных средств больше, чем цена позиции - возвращаем неизменённый лот else if (Money>=TradeMrg) { // Если цена позиции равна или больше, чем есть свободных средств, то ... ltcorr=MathAbs(MathFloor(TradeMrg/OneLot/StpLot)*StpLot); // ... рассчитаем допустимый лот MoneyCorr=ltcorr*OneLot; Print("Func CorrectLots: лот ",lt," скорректирован до ",DoubleToStr(ltcorr,2), " Стоимость до корректировки = ",DoubleToStr(Money,dig), " Стоимость после корректировки = ",DoubleToStr(MoneyCorr,dig) ); return(ltcorr); // ... и вернём его значение } Print("Func CorrectLots: лот вернули без изменений"); return(ltcorr); // Возврат изначального лота в непредусмотренных случаях с сообщением } //+----------------------------------------------------------------------------+ 为了纠正手数,你需要调用该函数,在参数lt中插入你想开仓 的手数,而不是参数Part - 在交易中使用的自由资金将被划分的数字。也就是说,如果只交易一半的免费资金,Part的价值应该是2,如果是三分之一,那么就是3,四分之一-4,等等。 double Lot=CorrectLots(0.1, 2); 调用该函数后,插入Lot作为OrderSend()函数的一个参数。 该功能在EA中用硬马丁限制手数,防止损失手数。但利润率也在下降... [删除] 2012.02.07 19:27 #5480 回复我之前的问题,我不明白那里出了什么问题=( 1...541542543544545546547548549550551552553554555...652 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
先生们,你们能不能给我一个将未结头寸移至盈亏平衡点的函数的例子(在tick上工作),我的专家顾问有一个拖网,这个拖网的开始只是在翻转买入的函数之后。预先感谢你。
请看预告片--Yury Dzyuban的拖网库--特别是如何解决拖网是否只从利润中执行的问题,也就是说,如果变量trlinloss 的值= false,拖网是否在损失区执行。根据这个例子编辑你的拖网函数,就可以了。
朋友们,你们能告诉我为什么经典的马丁不工作了吗?它只打开交易购买!!!。一个月以来,我一直在捣鼓它--零情感!我的心都碎了。它在策略测试器中运行良好,但在演示中却不能。另一个有趣的事情--当我设置T/S和T/P 1000时--它只在买入时打开,而当我设置200时--在买入和卖出时打开...伙计,有什么区别?
以下是代码:请帮助我。
然后就变得更加不清楚了。假设我以1,000,000(1,000)美元买入一个欧元(经纪人将其乘以100,结果交易价格为100,000),图表跳升100点,我卖出它们,我以10,000美元的价格加价,以及经纪人的佣金和价差,结果6000美元净收入我口袋。(那么很明显,在销售之后,它将再次下跌100点。)这是胡说八道!!!!。也许它终究会跌到谷底?否则,非常大的玩家会什么都不做就能赚到数十亿美元。
那么我不知道...
总的来说,为了实现明显的价格波动,有必要买入或卖出一个非常大的数额,非常大。对于这样的金额,杠杆不是我的1/200,而是象征性的1/2。嗯,这纯粹是我个人的想法。我可以写这样的胡说八道...
不可能!为什么不呢?在超额完成任务的时候,并没有任何未结订单!这就是所谓的超额完成任务。也许我不明白。
搜索周期也在历史上!这就是我把它赋值给int ticket变量的地方!
它发誓,对不起,2012.02.04 11:28:47 2011.12.06 16:35 GMT EURUSD,M30:警告: 卖出选择错误 HISTORYticket 4105
当它从MODE_HISTORY到MODE_TRADES?
而最重要的是,我在历史上借助于订单选择,选择了相同的订单,而且是先选择的,否则我就不能用它来工作了!没有逻辑!!!!!!,我很震惊。
需要帮助!
我在我的EA(事件计数器)里有以下块。
如果(isCloseLastPosByStop()==True) //如果最后一笔订单是由Stop关闭。
问题:我如何将数据写入文件(Excel)而不是在屏幕上显示?
下午好。
请告知为什么不画箭头,代码。
ObjectCreate("miniDown",OBJ_ARROW, 0, Time[1], Open[1])。
ObjectSet("miniDown", OBJPROP_ARROWCODE, 241)。
ObjectSet("miniDown", OBJPROP_COLOR, Yellow)。
假设欧元兑美元=1.44757,英镑兑美元=1.63366,你希望它们彼此接近。
让我解释一下。
a=GBPUSD/EURUSD=1.12855336874901大约1.12855 。
也就是说,如果我想买入/卖出一种货币,使交易的价值大致相等,那么
我需要买入/卖出 EURUSD*a,但没有这样的手数,所以我的问题是如何实现它,手数计算?
我没有这么多,所以我的问题是如何做到这一点?
我想分享计算最大允许手数的函数,考虑到未结头寸,换句话说,使用股本。标准函数计算风险,但如果我有交易,我没有足够的钱来打开它们
我曾经为一个定制的EA写过它。
为了纠正手数,你需要调用该函数,在参数lt中插入你想开仓 的手数,而不是参数Part - 在交易中使用的自由资金将被划分的数字。也就是说,如果只交易一半的免费资金,Part的价值应该是2,如果是三分之一,那么就是3,四分之一-4,等等。
调用该函数后,插入Lot作为OrderSend()函数的一个参数。
该功能在EA中用硬马丁限制手数,防止损失手数。但利润率也在下降...