初学者的问题 MQL5 MT5 MetaTrader 5 - 页 722 1...715716717718719720721722723724725726727728729...1503 新评论 Artyom Trishkin 2017.01.21 14:23 #7211 Alexey Viktorov: 是的,嗯...我在哪里可以找到这样的经纪人...你能给我一个链接吗? 这就对了。买入时以买入价收盘 Alexey Viktorov 2017.01.21 14:26 #7212 我为我的不注意而道歉。我读的是 "打开"... Konstantin Bragin 2017.01.22 17:45 #7213 下午好。 问题。 你能告诉我,为什么我不能把买入挂起。 request.price =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+(offset)*point; 如果 offset=1 ,则会弹出 错误。 失败的买入止损0.10 AUDNZD.m在1.03748 [无效价格],即小 水平 价格 (在 我的 情况下)。 当同样的 "执行命令 "紧接着被放置在它之后时 request.price = SymbolInfoDouble(Symbol(), SYMBOL_ASK) 一切运作正常(即,订单已下达)。 订单在1.03747 买入0.10 [#2在1.03747买入0.10 AUDNZD.m] 。 为什么不接受挂单(1.03748)的请求, 即在1.03747的时候可以下单,但在1.03748的时候却不可以?(因为SYMBOL_ASK考虑到了 点差和偏移量--从当前价格下单的偏移量,以点为单位,增加1) 但在偏移量=100时:待定的BUY_STOP价格=1.03847 - 它已经工作了 谢谢你。 Andrey F. Zelinsky 2017.01.22 17:49 #7214 Konstantin_78:下午好。 问题。 你能告诉我,为什么我不能把买入挂起。 request.price =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+(offset)*point; 如果 offset=1 ,则会弹出 错误。 在1.03748 [无效价格]处买入0.10 AUDNZD.m失败,即小价位(在我看来)。 当我设置了一个 "执行命令 "后立即 request.price = SymbolInfoDouble(Symbol(), SYMBOL_ASK) 一切运作正常(即,订单已下达)。 订单在1.03747 买入0.10 [#2在1.03747买入0.10 AUDNZD.m] 。 为什么不接受挂单(1.03748)的请求,即在1.03747下单,但在1.03748下单量小? 但如果偏移量=100:待定的BUY_STOP价格=1.03847,就已经成功了。 谢谢你。你已经回答了你自己的问题。有一个参数 "stoplevel"--从当前价格到挂单价格的最小必要距离--对于每个符号都有自己的值,并在交易条件中设置。 Konstantin Bragin 2017.01.22 18:53 #7215 Andrey F. Zelinsky: Вы же сами и ответили на свой вопрос.Есть такой параметр stoplevel -- минимально необходимое расстояние от текущей цены до цены установки отложенного ордера -- для каждого инструмента своё значение и задаётся в торговых условиях 那么也许可以这样写价格=SymbolInfoDouble(Symbol(),SYMBOL_ASK)+SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL)*point虽然,如果你写的是"......从目前的 价格",这与价差有什么关系?这包括在SYMBOL_ASK中(因为SYMBOL_ASK=开盘价+价差)。 Sile Si 2017.01.23 00:26 #7216 Vladimir Karputov:我附上一个例子来帮助你...我明白了,这个例子有帮助。谢谢你。 现在,这里有一个问题。 当我增加手数时,在某些时候没有足够的自由资金,我需要用增加的手数开盘。 也就是说,要输入最大的手数,只要FreeMargin允许就可以了。 如何写这个条件:如果没有足够的资金以计算的手数开仓,函数应该返回可能的最大手数来开仓。 double LotA() { double Lot=FirstLot; if(DoublingCount<=0) return Lot; double MaxLot=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX); double MainLot=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);if(Lot<MainLot)Lot=MainLot; if(Lot>MaxLot)Lot=MaxLot; double lt1=Lot; HistorySelect(0,TimeCurrent()); if(HistoryOrdersTotal()==0)return(Lot); double cl=HistoryOrderGetDouble(HistoryOrderGetTicket(HistoryOrdersTotal()-1),ORDER_PRICE_OPEN); double op=HistoryOrderGetDouble(HistoryOrderGetTicket(HistoryOrdersTotal()-2),ORDER_PRICE_OPEN); long typeor=HistoryOrderGetInteger(HistoryOrderGetTicket(HistoryOrdersTotal()-2),ORDER_TYPE); if(typeor==ORDER_TYPE_BUY) { if(op>cl) { if(ud<DoublingCount) { lt1=HistoryOrderGetDouble(HistoryOrderGetTicket(HistoryOrdersTotal()-2),ORDER_VOLUME_INITIAL)*_C_; ud++; } else ud=0; } else ud=0; } if(typeor==ORDER_TYPE_SELL) { if(cl>op) { if(ud<DoublingCount) { lt1=HistoryOrderGetDouble(HistoryOrderGetTicket(HistoryOrdersTotal()-2),ORDER_VOLUME_INITIAL)*_C_; ud++; } else ud=0; } else ud=0; } if(lt1>MaxLot)lt1=MaxLot; lt1=LotCheck(lt1); return(lt1); }//+------------------------------------------------------------------+} Questions from Beginners MQL5 HistoryOrderGetTicket Any questions from newcomers Renat Akhtyamov 2017.01.23 04:57 #7217 Marina Korotkih: 我明白了,这个例子有帮助。谢谢你。现在这个问题。当我增加手数时,在某些时候没有足够的自由资金,我需要用更大的手数开盘。也就是说,要输入最大的手数,只要FreeMargin允许就可以了。如何写这个条件:如果没有足够的资金以计算的手数开仓,函数应该返回可能的最大手数来开仓。 double Mgn,Lot=0,BID,ASK; BID=SymbolInfoDouble(_Symbol,SYMBOL_BID); ASK=SymbolInfoDouble(_Symbol,SYMBOL_ASK); if(OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,1,ASK,Mgn)==true)Lot=AccountInfoDouble(ACCOUNT_MARGIN_FREE)/Mgn; if(OrderCalcMargin(ORDER_TYPE_SELL,_Symbol,1,BID,Mgn)==true)Lot=AccountInfoDouble(ACCOUNT_MARGIN_FREE)/Mgn; 玛丽娜,这个怎么样?你应用两个计算选项--一个是打开卖出,一个是打开买入 Vitaly Muzichenko 2017.01.23 05:03 #7218 Renat Akhtyamov: if(OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,1,ASK,Mgn)==true)Lot=AccountInfoDouble(ACCOUNT_MARGIN_FREE)/Mgn; if(OrderCalcMargin(ORDER_TYPE_SELL,_Symbol,1,BID,Mgn)==true)Lot=AccountInfoDouble(ACCOUNT_MARGIN_FREE)/Mgn; 玛丽娜,会是这样 吗?不,不是的。 你不仅需要计算可能的最大手数,还要检查整个事情的最小允许手数,因为可能发生最小手数是0.01,而保证金只允许你开0.009,然后用永远不会被接受的请求折磨服务器,但他们可以对你采取行动) Renat Akhtyamov 2017.01.23 06:28 #7219 Vitaly Muzichenko:不,不是的。 你不仅仅需要计算可能的最大手数,还要检查整个事情的最小允许量,因为可能发生最小手数0.01,而保证金只允许你开0.009,那么折磨服务器的请求,它永远不会接受,但对你的行动又可以采取)写完整的代码,因为它应该是这样的,我会在同一时间看到....?我将一直向你学习,并密切关注你的情况,以确保答案完整。我曾经担任过技术主管,别担心,一切都会好起来的!我们是一个团队! Aliaksandr Hryshyn 2017.01.23 18:57 #7220 Marina Korotkih: 我明白了,这个例子有帮助。谢谢你。现在这个问题。当我增加手数时,在某些时候没有足够的自由资金,我需要用更大的手数开盘。也就是说,要输入最大的手数,只要FreeMargin允许就可以了。如何写这个条件:如果没有足够的资金以计算的手数开仓,函数应该返回可能的最大手数来开仓。 你在一个滑坡上)。 1...715716717718719720721722723724725726727728729...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
是的,嗯...我在哪里可以找到这样的经纪人...你能给我一个链接吗?
下午好。
问题。
你能告诉我,为什么我不能把买入挂起。
request.price =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+(offset)*point;
如果 offset=1 ,则会弹出 错误。
失败的买入止损0.10 AUDNZD.m在1.03748 [无效价格],即小 水平 价格 (在 我的 情况下)。
当同样的 "执行命令 "紧接着被放置在它之后时
request.price = SymbolInfoDouble(Symbol(), SYMBOL_ASK)
一切运作正常(即,订单已下达)。
订单在1.03747 买入0.10 [#2在1.03747买入0.10 AUDNZD.m] 。
为什么不接受挂单(1.03748)的请求, 即在1.03747的时候可以下单,但在1.03748的时候却不可以?(因为SYMBOL_ASK考虑到了 点差和偏移量--从当前价格下单的偏移量,以点为单位,增加1)
但在偏移量=100时:待定的BUY_STOP价格=1.03847 - 它已经工作了
谢谢你。下午好。
问题。
你能告诉我,为什么我不能把买入挂起。
request.price =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+(offset)*point;
如果 offset=1 ,则会弹出 错误。
在1.03748 [无效价格]处买入0.10 AUDNZD.m失败,即小价位(在我看来)。
当我设置了一个 "执行命令 "后立即
request.price = SymbolInfoDouble(Symbol(), SYMBOL_ASK)
一切运作正常(即,订单已下达)。
订单在1.03747 买入0.10 [#2在1.03747买入0.10 AUDNZD.m] 。
为什么不接受挂单(1.03748)的请求,即在1.03747下单,但在1.03748下单量小?
但如果偏移量=100:待定的BUY_STOP价格=1.03847,就已经成功了。
谢谢你。你已经回答了你自己的问题。
有一个参数 "stoplevel"--从当前价格到挂单价格的最小必要距离--对于每个符号都有自己的值,并在交易条件中设置。
Вы же сами и ответили на свой вопрос.
Есть такой параметр stoplevel -- минимально необходимое расстояние от текущей цены до цены установки отложенного ордера -- для каждого инструмента своё значение и задаётся в торговых условиях
那么也许可以这样写
价格=SymbolInfoDouble(Symbol(),SYMBOL_ASK)+SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL)*point
虽然,如果你写的是"......从目前的 价格",这与价差有什么关系?这包括在SYMBOL_ASK中(因为SYMBOL_ASK=开盘价+价差)。
我附上一个例子来帮助你...
我明白了,这个例子有帮助。谢谢你。
现在,这里有一个问题。
当我增加手数时,在某些时候没有足够的自由资金,我需要用增加的手数开盘。
也就是说,要输入最大的手数,只要FreeMargin允许就可以了。
如何写这个条件:如果没有足够的资金以计算的手数开仓,函数应该返回可能的最大手数来开仓。
{
double Lot=FirstLot;
if(DoublingCount<=0) return Lot;
double MaxLot=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
double MainLot=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
if(Lot<MainLot)Lot=MainLot;
if(Lot>MaxLot)Lot=MaxLot;
double lt1=Lot;
HistorySelect(0,TimeCurrent());
if(HistoryOrdersTotal()==0)return(Lot);
double cl=HistoryOrderGetDouble(HistoryOrderGetTicket(HistoryOrdersTotal()-1),ORDER_PRICE_OPEN);
double op=HistoryOrderGetDouble(HistoryOrderGetTicket(HistoryOrdersTotal()-2),ORDER_PRICE_OPEN);
long typeor=HistoryOrderGetInteger(HistoryOrderGetTicket(HistoryOrdersTotal()-2),ORDER_TYPE);
if(typeor==ORDER_TYPE_BUY)
{
if(op>cl)
{
if(ud<DoublingCount)
{
lt1=HistoryOrderGetDouble(HistoryOrderGetTicket(HistoryOrdersTotal()-2),ORDER_VOLUME_INITIAL)*_C_;
ud++;
}
else ud=0;
}
else ud=0;
}
if(typeor==ORDER_TYPE_SELL)
{
if(cl>op)
{
if(ud<DoublingCount)
{
lt1=HistoryOrderGetDouble(HistoryOrderGetTicket(HistoryOrdersTotal()-2),ORDER_VOLUME_INITIAL)*_C_;
ud++;
}
else ud=0;
}
else ud=0;
}
if(lt1>MaxLot)lt1=MaxLot;
lt1=LotCheck(lt1);
return(lt1);
}
//+------------------------------------------------------------------+}
我明白了,这个例子有帮助。谢谢你。
现在这个问题。
当我增加手数时,在某些时候没有足够的自由资金,我需要用更大的手数开盘。
也就是说,要输入最大的手数,只要FreeMargin允许就可以了。
如何写这个条件:如果没有足够的资金以计算的手数开仓,函数应该返回可能的最大手数来开仓。
double Mgn,Lot=0,BID,ASK;
BID=SymbolInfoDouble(_Symbol,SYMBOL_BID);
ASK=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
if(OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,1,ASK,Mgn)==true)Lot=AccountInfoDouble(ACCOUNT_MARGIN_FREE)/Mgn;
if(OrderCalcMargin(ORDER_TYPE_SELL,_Symbol,1,BID,Mgn)==true)Lot=AccountInfoDouble(ACCOUNT_MARGIN_FREE)/Mgn;
玛丽娜,这个怎么样?
你应用两个计算选项--一个是打开卖出,一个是打开买入
if(OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,1,ASK,Mgn)==true)Lot=AccountInfoDouble(ACCOUNT_MARGIN_FREE)/Mgn;
if(OrderCalcMargin(ORDER_TYPE_SELL,_Symbol,1,BID,Mgn)==true)Lot=AccountInfoDouble(ACCOUNT_MARGIN_FREE)/Mgn;
不,不是的。
你不仅需要计算可能的最大手数,还要检查整个事情的最小允许手数,因为可能发生最小手数是0.01,而保证金只允许你开0.009,然后用永远不会被接受的请求折磨服务器,但他们可以对你采取行动)
不,不是的。
你不仅仅需要计算可能的最大手数,还要检查整个事情的最小允许量,因为可能发生最小手数0.01,而保证金只允许你开0.009,那么折磨服务器的请求,它永远不会接受,但对你的行动又可以采取)
写完整的代码,因为它应该是这样的,我会在同一时间看到....?
我将一直向你学习,并密切关注你的情况,以确保答案完整。
我曾经担任过技术主管,别担心,一切都会好起来的!
我们是一个团队!
我明白了,这个例子有帮助。谢谢你。
现在这个问题。
当我增加手数时,在某些时候没有足够的自由资金,我需要用更大的手数开盘。
也就是说,要输入最大的手数,只要FreeMargin允许就可以了。
如何写这个条件:如果没有足够的资金以计算的手数开仓,函数应该返回可能的最大手数来开仓。