来自一个 "傻瓜 "的问题 - 页 137 1...130131132133134135136137138139140141142143144...277 新评论 Yedelkin 2012.05.01 13:35 #1361 alph:你能给我一些EA的代码,让我在5-6小时后平仓 吗?或者给我一个链接。如果你有兴趣,可以自己试试。首先,使用PositionSelect() 函数,检查开仓情况。 如果成功,使用PositionGetInteger(POSITION_TIME)找出开仓时间,检查你的条件是5-6小时。 当到了平仓的时候,你会发现位置的类型(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)和它的体积PositionGetDouble(POSITION_VOLUME) 。 然后你设置一个相同数量的相反订单。你可以在MQL5\Include\Trade\Trade .mqh\PositionClose(const string symbol,ulong deviation=ULONG_MAX) 看到一个平仓方法的例子 。 Andrey Dik 2012.05.01 14:05 #1362 joo: 谢谢你,这似乎是我们需要的。并非如此。要获得 "鼠标点击 "事件,必须使用OnChartEvent(),但它不能在脚本中使用,我应该怎么做?所以没有普遍的功能? --- 2012.05.01 14:17 #1363 joo:并非如此。要获得 "鼠标点击 "事件,必须使用OnChartEvent(),但它不能在脚本中使用,我应该怎么做?所以没有普遍的功能? 然后使用GetKeyState + GetPosition + 图形对象的已知坐标。 Andrey Dik 2012.05.01 14:30 #1364 sergeev: 然后使用GetKeyState + GetPosition + 图形对象的已知坐标。VinApi?就是这样,我已经失去了做一个浏览和从列表中选择文件的通用功能的愿望(某种小型文件管理器)。:( --- 2012.05.01 14:33 #1365 joo:WINAPI?就是这样,我已经失去了做一个浏览和从列表中选择文件的通用功能的愿望(某种迷你文件管理器)。:( 你怎么会想做一个函数并等待用户的选择超过一个刻度? Andrey Dik 2012.05.01 14:35 #1366 sergeev: 那为什么要写剧本? 因为它并不关心虱子是否在滴答作响。 alph 2012.05.01 14:48 #1367 Yedelkin:请看MQL5\Include\Trade\Trade .mqh\PositionClose(const string symbol,ulong deviation=ULONG_MAX)中的一个平仓 方法的例子。谢谢你。但我还不能理解班级,尽管我所拥有的通常是由于我在某处看到并弄明白了。 --- 2012.05.01 14:55 #1368 joo: 因为他并不关心虱子是否在滴答作响。 那么,专家是否不关心呢? Yedelkin 2012.05.01 14:58 #1369 alph:但对于上课,我还没有开窍,虽然我得到的东西通常是以在某处看到它并弄明白它为代价的。好吧,任何类方法 都只是普通的代码。试着在这里解析这个代码。 MqlTradeRequest m_request={0}; // request data MqlTradeResult m_result={0}; // result data MqlTradeCheckResult m_check_result={0}; // result check data bool partial_close=false; int retry_count =10; uint retcode =TRADE_RETCODE_REJECT; do { //--- checking if(PositionSelect(symbol)) { if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) { //--- prepare request for close BUY position m_request.type =ORDER_TYPE_SELL; m_request.price=SymbolInfoDouble(symbol,SYMBOL_BID); } else { //--- prepare request for close SELL position m_request.type =ORDER_TYPE_BUY; m_request.price=SymbolInfoDouble(symbol,SYMBOL_ASK); } } else { //--- position not found m_result.retcode=retcode; return(false); } //--- setting request m_request.action =TRADE_ACTION_DEAL; m_request.symbol =symbol; m_request.deviation =(deviation==ULONG_MAX) ? m_deviation : deviation; m_request.type_filling=m_type_filling; m_request.volume =PositionGetDouble(POSITION_VOLUME); //--- check volume double max_volume=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX); if(m_request.volume>max_volume) { m_request.volume=max_volume; partial_close=true; } else partial_close=false; //--- order check if(!OrderCheck(m_request,m_check_result)) { //--- copy return code m_result.retcode=m_check_result.retcode; return(false); } //--- order send if(!OrderSend(m_request,m_result)) { if(--retry_count!=0) continue; if(retcode==TRADE_RETCODE_DONE_PARTIAL) m_result.retcode=retcode; return(false); } retcode=TRADE_RETCODE_DONE_PARTIAL; if(partial_close) Sleep(1000); } while(partial_close); Andrey Dik 2012.05.01 15:02 #1370 sergeev: 所以专家并不关心,为什么要有剧本? 如果不是脚本,所有的逻辑都应该在OnChartEvent()中执行/调用? 1...130131132133134135136137138139140141142143144...277 新评论
你能给我一些EA的代码,让我在5-6小时后平仓 吗?或者给我一个链接。
如果你有兴趣,可以自己试试。首先,使用PositionSelect() 函数,检查开仓情况。 如果成功,使用PositionGetInteger(POSITION_TIME)找出开仓时间,检查你的条件是5-6小时。 当到了平仓的时候,你会发现位置的类型(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)和它的体积PositionGetDouble(POSITION_VOLUME) 。 然后你设置一个相同数量的相反订单。你可以在MQL5\Include\Trade\Trade .mqh\PositionClose(const string symbol,ulong deviation=ULONG_MAX) 看到一个平仓方法的例子 。
谢谢你,这似乎是我们需要的。
并非如此。
要获得 "鼠标点击 "事件,必须使用OnChartEvent(),但它不能在脚本中使用,我应该怎么做?所以没有普遍的功能?
并非如此。
要获得 "鼠标点击 "事件,必须使用OnChartEvent(),但它不能在脚本中使用,我应该怎么做?所以没有普遍的功能?
然后使用GetKeyState + GetPosition + 图形对象的已知坐标。
VinApi?
就是这样,我已经失去了做一个浏览和从列表中选择文件的通用功能的愿望(某种小型文件管理器)。:(
WINAPI?
就是这样,我已经失去了做一个浏览和从列表中选择文件的通用功能的愿望(某种迷你文件管理器)。:(
那为什么要写剧本?
请看MQL5\Include\Trade\Trade .mqh\PositionClose(const string symbol,ulong deviation=ULONG_MAX)中的一个平仓 方法的例子。
谢谢你。
但我还不能理解班级,尽管我所拥有的通常是由于我在某处看到并弄明白了。
因为他并不关心虱子是否在滴答作响。
但对于上课,我还没有开窍,虽然我得到的东西通常是以在某处看到它并弄明白它为代价的。
好吧,任何类方法 都只是普通的代码。试着在这里解析这个代码。
MqlTradeRequest m_request={0}; // request data MqlTradeResult m_result={0}; // result data MqlTradeCheckResult m_check_result={0}; // result check data bool partial_close=false; int retry_count =10; uint retcode =TRADE_RETCODE_REJECT; do { //--- checking if(PositionSelect(symbol)) { if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) { //--- prepare request for close BUY position m_request.type =ORDER_TYPE_SELL; m_request.price=SymbolInfoDouble(symbol,SYMBOL_BID); } else { //--- prepare request for close SELL position m_request.type =ORDER_TYPE_BUY; m_request.price=SymbolInfoDouble(symbol,SYMBOL_ASK); } } else { //--- position not found m_result.retcode=retcode; return(false); } //--- setting request m_request.action =TRADE_ACTION_DEAL; m_request.symbol =symbol; m_request.deviation =(deviation==ULONG_MAX) ? m_deviation : deviation; m_request.type_filling=m_type_filling; m_request.volume =PositionGetDouble(POSITION_VOLUME); //--- check volume double max_volume=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX); if(m_request.volume>max_volume) { m_request.volume=max_volume; partial_close=true; } else partial_close=false; //--- order check if(!OrderCheck(m_request,m_check_result)) { //--- copy return code m_result.retcode=m_check_result.retcode; return(false); } //--- order send if(!OrderSend(m_request,m_result)) { if(--retry_count!=0) continue; if(retcode==TRADE_RETCODE_DONE_PARTIAL) m_result.retcode=retcode; return(false); } retcode=TRADE_RETCODE_DONE_PARTIAL; if(partial_close) Sleep(1000); } while(partial_close);所以专家并不关心,为什么要有剧本?