任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 1003 1...99699799899910001001100210031004100510061007100810091010...1178 新评论 f-rafail 2016.01.28 15:19 #10021 Сергей 2016.01.28 16:48 #10022 请告知如何实施以下内容。图表上有自定义的线条,让它们的数量为 "n"。当价格接近其中一条线时,如何获得价格值? 提前感谢! Tema97 2016.01.29 14:53 #10023 大家好)请帮助 - 目标是(如果价格高于(100点)"线",那么 "买入" )。)如何表达(价格比任何数值高100点),还有这个问题,如何知道目前移动平均线 的价格?预先感谢 ) Alexey Viktorov 2016.01.29 15:19 #10024 Tema97:大家好)请帮助 - 目标是(如果价格高于(100点)"线",那么 "买入" )。)如何表达(价格比任何数值高100点),还有这个问题,如何知道目前移动平均线的价格?预先感谢 ) Tema,阅读文档,那里描述了iMa以及图形对象。有一个函数ObjectGetDouble(有相应的参数) 来获取一条线的价格 Ratmirf 2016.01.29 16:35 #10025 请告知新人如何避免在订单被关闭后重新开盘,同时保持开盘的交易条件。例如:如果随机指数向上越过50水平,打开买入。在随机指数反转时,或当它达到80水平时,或在获利时关闭。但交易条件的开放是保留的!也就是说,随机指数保持在50以上,买盘再次打开!double S_1=iStochastic(NULL,0,K,D,slowing,MODE_SMA,price_field,MODE_MAIN,0)。double S_2=iStochastic(NULL,0,K,D,slowing,MODE_SMA,price_field,MODE_MAIN,1)。如果(S_1>50){Opn_B=true。}如果(S_1<S_2||S_1>80){Cls_B=true。}我在简单的专家顾问计划中插入交易标准,这在MQL教程中有所介绍。请告知使用哪个功能来避免这个问题。谢谢你! Alexey Viktorov 2016.01.29 18:21 #10026 if(S_1 > 50 && S_2 < 50)这是自下而上跨越50水平的条件。 Ratmirf 2016.01.29 19:06 #10027 AlexeyVik:这是自下而上跨越50水平的条件。 非常感谢您!我现在要试一试。 fxseminar 2016.01.29 20:11 #10028 我如何在不关闭图表的情况下将一个 "附加 "指标(或EA)从图表中 "分离 "出来? Yury2 2016.01.29 23:16 #10029 有没有可能在图表上放一个实时工作的AccountEquity()指标?我在哪里可以得到它? Ratmirf 2016.01.30 13:39 #10030 你好,请问你能不能给我建议?我正在改变MQL4教程中提供的专家顾问的交易标准。当我试图为买入设置止损时,程序给出错误130:错误的止损。请解释一下原因?// M15的数值外部双数 StopLoss =0; // 正在开仓的订单的SL。外部双数TakeProfit =0; // 正在开仓的订单的TP。外来的int K = 5。外来的int D = 3;外来的int slowing = 3;外来的int price_field = 0;Extern int Level_1 = 80; // Stochastic levelextern int Level_2 = 20;外部inttern Period_MA_2 = 31; // MA周期2外部双倍Rastvor =28.0; // MA之间的距离extern double Lots =0.01; // 固定的手数。外部双倍Prots =0.07; // 自由资金的百分比bool Work=true; // 专家顾问将工作。string Symb; // 金融工具的名称//--------------------------------------------------------------- 2 --int start(){䵮䵮K_级别。总数, // 窗口中的订单数Tip=-1, // 选择的订单类型(B=0,S=1)。Ticket; // 订单号双重S_1。S_2,MA_1_t, // MA_1_t值。MA_1当前值MA_2_t, // 值。MA_2 current MA_2_t value // 按顺序选择的手数Lots, //Lots Count in Order currently selectedLts, //开放订单中的手数Min_Lot, // 最小地段数步骤,//地段大小变化的步骤免费, // 目前的免费资金One_Lot, // 一批的价值价格, // 所选订单的价格SL, // 所选订单的SL价格TP; // 所选订单的TPboolAns =false, // 关闭后的服务器答案Cls_B=false, // 关闭购买的标准Cls_S=false, //关闭Sell的标准。Opn_B=false, //开买的标准Opn__S=false; // 开启Sell的标准。//--------------------------------------------------------------- 3 --//预处理如果(Bars < Period_MA_2) // 没有足够的条数{Alert("窗口中没有足够的条形,专家顾问不工作。")。return; // 退出start()}if(Work==false) // 严重错误。{Alert("Critical error. Expert Advisor is not working.")。return; // 从start()退出。}//--------------------------------------------------------------- 4 --// 顺序计数Symb=Symbol(); // 金融工具的名称。总数=0; // 订单数量for(int i=1; i<=OrdersTotal(); i++)// 订单循环{如果(OrderSelect(i-1,SELECT_BY_POS)==true) //如果{ // 订单分析。如果(OrderSymbol()!=Symb)继续; // 不是我们的金融工具如果(OrderType()>1) // 我们有一个待定订单{Alert("检测到挂单,专家顾问不工作;)return; // Exit()}总计++; // 市场订单计数器if (Total>1) // 不超过一个订单{警报("几个市场订单,专家顾问不工作;)return; // Exit()}Ticket=OrderTicket(); // 选择的订单号。Tip =OrderType(); // 所选订单的类型。Price =OrderOpenPrice(); // 所选订单的价格。SL =OrderStopLoss(); // 所选订单的SL。TP =OrderTakeProfit(); // 所选订单的TP。Lot =OrderLots(); // Lot的数量}}//--------------------------------------------------------------- 5 --// 贸易标准S_1=iStochastic(NULL,0,K,D,slowing,MODE_SMA,price_field,MODE_MAIN,0)。S_2=iStochastic(NULL,0,K,D,sling,MODE_SMA,price_field,MODE_MAIN,1)。如果(S_1 > 50 && S_2 < 50){Opn_B=true。}如果(S_1<S_2||(S_1 < 80 && S_2 > 80)){Cls_B=true。}如果(S_1 < 50 && S_2 > 50){Opn_S=true。}如果(S_1>S_2||(S_1>20 && S_2<20)){Cls_S=true。}//--------------------------------------------------------------- 6 --// 关闭订单while(true) // 关闭订单循环。{if (Tip==0 && Cls_B==true) //打开买入订单。{ //有一个封闭的标准Alert("Trying to close Buy" ,Ticket," ;)RefreshRates(); // 刷新数据Ans=OrderClose(Ticket,Lot,Bid,2); // Closed Buy如果(Ans==true) // 成功了 :){警报("关闭买入订单",Ticket;)break; // 从闭环中退出}如果(Fun_Error(GetLastError())==1) //错误处理continue; // retryreturn; // 从start()退出。}if (Tip==1 && Cls_S==true) // 卖出订单打开。{ // 有一个接近的标准Alert("Attempting to close Sell",Ticket," ;)RefreshRates(); // 刷新数据Ans=OrderClose(Ticket,Lot,Ask,2); // Close Sell如果(Ans==true) // 成功了 :){提醒("卖出订单关闭",Ticket;)break; // 从闭环中退出}如果(Fun_Error(GetLastError())==1) //错误处理continue; // retryreturn; // 从start()退出。}break; // Exit while}//--------------------------------------------------------------- 7 --// 顺序值RefreshRates(); // 刷新数据Min_Lot=MarketInfo(Symb,MODE_MINLOT); //最小的手数Free =AccountFreeMargin(); // 释放资金One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);//1手的价值步骤 =MarketInfo(Symb,MODE_LOTSTEP); // 步骤变化大小如果 (Lots > 0) // 如果指定了地段Lts =Lots; // 我们与他们一起工作否则//自由资金的百分比Lts=MathFloor(Free*Prots/One_Lot/Step)*Step;//要打开if(Lts < Min_Lot) Lts=Min_Lot; // 不小于Min_Lot; // 不小于Min_Lotif(Lts*One_Lot > Free) // 比Free更贵的地段{Alert(" Not enough money ", Lts," lots)。return; // 退出start()}//--------------------------------------------------------------- 8 --//开启订单while(true) //Order close loop.{if (Total==0 && Opn_B==true) // 没有未结订单{ //开放购买标准。RefreshRates(); // 更新数据Alert("Trying to open Buy. Waiting for reply...")。Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,StopLoss,TakeProfit);//open Buyif (Ticket > 0) // 它成功了 :){警报("买入订单打开",Ticket;)return; //退出订单}如果(Fun_Error(GetLastError())==1) //错误处理continue; // retryreturn; // 从start()退出。}if (Total==0 && Opn_S==true) // 没有未结订单{ //开放销售标准。RefreshRates(); // 更新数据Alert("Attempting to open Sell. Waiting for reply...")。Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,StopLoss,TakeProfit);//Open Sel.if (Ticket > 0) // 它成功了 :){警报("卖出订单打开",Ticket;)return; //退出订单}如果(Fun_Error(GetLastError())==1) //错误处理continue; // retryreturn; // 从start()退出。}break; // Exit while}//--------------------------------------------------------------- 9 --return; //从start()中退出。}//-------------------------------------------------------------- 10 --int Fun_Error(int Error) // 错误处理 fie{switch(Error){ // 无法克服的错误。case 4: Alert("The trade server is busy. Try again...");Sleep(3000); // 简单的解决方案。return(1); // 退出函数。case 135:Alert("Price changed. Try again...")。RefreshRates(); // 刷新数据。return(1); // 从函数中退出。case 136:Alert("No price. Waiting for a new tick...")。while(RefreshRates()==false) // 读取一个新的刻度线Sleep(1); // 循环中的延迟。return(1); // 从函数中退出。case 137:Alert("Broker is busy. Try again...");Sleep(3000); // 简单的解决方案。return(1); // 从函数中退出。case 146:Alert("The trading subsystem is busy. Try again...");Sleep(500); // 简单决定return(1); // 从函数中退出。// 严重错误case 2: Alert("General error;)return(0); // 从函数中退出。case 5: Alert("旧版本的终端。")。Work=false; // 不再工作return(0); // 从函数中退出。case 64: Alert("Account blocked.");Work=false; // 不再工作return(0); // 从函数中退出。case 133:Alert("禁止交易。")。return(0); // 从函数中退出。case 134:Alert("没有足够的钱来执行交易")。return(0); // 从函数中退出。默认:Alert("An error has occurred",Error); // Other optionsreturn(0); // 从函数中退出。}}//-------------------------------------------------------------- 11 --int New_Stop(int Parametr) // 检查停止刺。{int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);//最小距离。if (Parametr < Min_Dist) // 如果小于允许的范围。{Parametr=Min_Dist; // 设置公差。Alert("停止距离增加;)}return(Parametr); // 返回值。} KimIV的有用功能 [存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. Any rookie question, so 1...99699799899910001001100210031004100510061007100810091010...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
请告知如何实施以下内容。
图表上有自定义的线条,让它们的数量为 "n"。当价格接近其中一条线时,如何获得价格值?
提前感谢!
大家好)请帮助 - 目标是(如果价格高于(100点)"线",那么 "买入" )。)如何表达(价格比任何数值高100点),还有这个问题,如何知道目前移动平均线 的价格?
预先感谢 )
大家好)请帮助 - 目标是(如果价格高于(100点)"线",那么 "买入" )。)如何表达(价格比任何数值高100点),还有这个问题,如何知道目前移动平均线的价格?
预先感谢 )
请告知新人如何避免在订单被关闭后重新开盘,同时保持开盘的交易条件。
例如:如果随机指数向上越过50水平,打开买入。在随机指数反转时,或当它达到80水平时,或在获利时关闭。但交易条件的开放是保留的!也就是说,随机指数保持在50以上,买盘再次打开!
double S_1=iStochastic(NULL,0,K,D,slowing,MODE_SMA,price_field,MODE_MAIN,0)。
double S_2=iStochastic(NULL,0,K,D,slowing,MODE_SMA,price_field,MODE_MAIN,1)。
如果(S_1>50)
{
Opn_B=true。
}
如果(S_1<S_2||S_1>80)
{
Cls_B=true。
}
我在简单的专家顾问计划中插入交易标准,这在MQL教程中有所介绍。请告知使用哪个功能来避免这个问题。谢谢你!
这是自下而上跨越50水平的条件。
这是自下而上跨越50水平的条件。
你好,请问你能不能给我建议?我正在改变MQL4教程中提供的专家顾问的交易标准。当我试图为买入设置止损时,程序给出错误130:错误的止损。请解释一下原因?
// M15的数值
外部双数 StopLoss =0; // 正在开仓的订单的SL。
外部双数TakeProfit =0; // 正在开仓的订单的TP。
外来的int K = 5。
外来的int D = 3;
外来的int slowing = 3;
外来的int price_field = 0;
Extern int Level_1 = 80; // Stochastic level
extern int Level_2 = 20;
外部inttern Period_MA_2 = 31; // MA周期2
外部双倍Rastvor =28.0; // MA之间的距离
extern double Lots =0.01; // 固定的手数。
外部双倍Prots =0.07; // 自由资金的百分比
bool Work=true; // 专家顾问将工作。
string Symb; // 金融工具的名称
//--------------------------------------------------------------- 2 --
int start()
{
䵮䵮
K_级别。
总数, // 窗口中的订单数
Tip=-1, // 选择的订单类型(B=0,S=1)。
Ticket; // 订单号
双重S_1。
S_2,
MA_1_t, // MA_1_t值。MA_1当前值
MA_2_t, // 值。MA_2 current MA_2_t value // 按顺序选择的手数
Lots, //Lots Count in Order currently selected
Lts, //开放订单中的手数
Min_Lot, // 最小地段数
步骤,//地段大小变化的步骤
免费, // 目前的免费资金
One_Lot, // 一批的价值
价格, // 所选订单的价格
SL, // 所选订单的SL价格
TP; // 所选订单的TP
bool
Ans =false, // 关闭后的服务器答案
Cls_B=false, // 关闭购买的标准
Cls_S=false, //关闭Sell的标准。
Opn_B=false, //开买的标准
Opn__S=false; // 开启Sell的标准。
//--------------------------------------------------------------- 3 --
//预处理
如果(Bars < Period_MA_2) // 没有足够的条数
{
Alert("窗口中没有足够的条形,专家顾问不工作。")。
return; // 退出start()
}
if(Work==false) // 严重错误。
{
Alert("Critical error. Expert Advisor is not working.")。
return; // 从start()退出。
}
//--------------------------------------------------------------- 4 --
// 顺序计数
Symb=Symbol(); // 金融工具的名称。
总数=0; // 订单数量
for(int i=1; i<=OrdersTotal(); i++)// 订单循环
{
如果(OrderSelect(i-1,SELECT_BY_POS)==true) //如果
{ // 订单分析。
如果(OrderSymbol()!=Symb)继续; // 不是我们的金融工具
如果(OrderType()>1) // 我们有一个待定订单
{
Alert("检测到挂单,专家顾问不工作;)
return; // Exit()
}
总计++; // 市场订单计数器
if (Total>1) // 不超过一个订单
{
警报("几个市场订单,专家顾问不工作;)
return; // Exit()
}
Ticket=OrderTicket(); // 选择的订单号。
Tip =OrderType(); // 所选订单的类型。
Price =OrderOpenPrice(); // 所选订单的价格。
SL =OrderStopLoss(); // 所选订单的SL。
TP =OrderTakeProfit(); // 所选订单的TP。
Lot =OrderLots(); // Lot的数量
}
}
//--------------------------------------------------------------- 5 --
// 贸易标准
S_1=iStochastic(NULL,0,K,D,slowing,MODE_SMA,price_field,MODE_MAIN,0)。
S_2=iStochastic(NULL,0,K,D,sling,MODE_SMA,price_field,MODE_MAIN,1)。
如果(S_1 > 50 && S_2 < 50)
{
Opn_B=true。
}
如果(S_1<S_2||(S_1 < 80 && S_2 > 80))
{
Cls_B=true。
}
如果(S_1 < 50 && S_2 > 50)
{
Opn_S=true。
}
如果(S_1>S_2||(S_1>20 && S_2<20))
{
Cls_S=true。
}
//--------------------------------------------------------------- 6 --
// 关闭订单
while(true) // 关闭订单循环。
{
if (Tip==0 && Cls_B==true) //打开买入订单。
{ //有一个封闭的标准
Alert("Trying to close Buy" ,Ticket," ;)
RefreshRates(); // 刷新数据
Ans=OrderClose(Ticket,Lot,Bid,2); // Closed Buy
如果(Ans==true) // 成功了 :)
{
警报("关闭买入订单",Ticket;)
break; // 从闭环中退出
}
如果(Fun_Error(GetLastError())==1) //错误处理
continue; // retry
return; // 从start()退出。
}
if (Tip==1 && Cls_S==true) // 卖出订单打开。
{ // 有一个接近的标准
Alert("Attempting to close Sell",Ticket," ;)
RefreshRates(); // 刷新数据
Ans=OrderClose(Ticket,Lot,Ask,2); // Close Sell
如果(Ans==true) // 成功了 :)
{
提醒("卖出订单关闭",Ticket;)
break; // 从闭环中退出
}
如果(Fun_Error(GetLastError())==1) //错误处理
continue; // retry
return; // 从start()退出。
}
break; // Exit while
}
//--------------------------------------------------------------- 7 --
// 顺序值
RefreshRates(); // 刷新数据
Min_Lot=MarketInfo(Symb,MODE_MINLOT); //最小的手数
Free =AccountFreeMargin(); // 释放资金
One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);//1手的价值
步骤 =MarketInfo(Symb,MODE_LOTSTEP); // 步骤变化大小
如果 (Lots > 0) // 如果指定了地段
Lts =Lots; // 我们与他们一起工作
否则//自由资金的百分比
Lts=MathFloor(Free*Prots/One_Lot/Step)*Step;//要打开
if(Lts < Min_Lot) Lts=Min_Lot; // 不小于Min_Lot; // 不小于Min_Lot
if(Lts*One_Lot > Free) // 比Free更贵的地段
{
Alert(" Not enough money ", Lts," lots)。
return; // 退出start()
}
//--------------------------------------------------------------- 8 --
//开启订单
while(true) //Order close loop.
{
if (Total==0 && Opn_B==true) // 没有未结订单
{ //开放购买标准。
RefreshRates(); // 更新数据
Alert("Trying to open Buy. Waiting for reply...")。
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,StopLoss,TakeProfit);//open Buy
if (Ticket > 0) // 它成功了 :)
{
警报("买入订单打开",Ticket;)
return; //退出订单
}
如果(Fun_Error(GetLastError())==1) //错误处理
continue; // retry
return; // 从start()退出。
}
if (Total==0 && Opn_S==true) // 没有未结订单
{ //开放销售标准。
RefreshRates(); // 更新数据
Alert("Attempting to open Sell. Waiting for reply...")。
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,StopLoss,TakeProfit);//Open Sel.
if (Ticket > 0) // 它成功了 :)
{
警报("卖出订单打开",Ticket;)
return; //退出订单
}
如果(Fun_Error(GetLastError())==1) //错误处理
continue; // retry
return; // 从start()退出。
}
break; // Exit while
}
//--------------------------------------------------------------- 9 --
return; //从start()中退出。
}
//-------------------------------------------------------------- 10 --
int Fun_Error(int Error) // 错误处理 fie
{
switch(Error)
{ // 无法克服的错误。
case 4: Alert("The trade server is busy. Try again...");
Sleep(3000); // 简单的解决方案。
return(1); // 退出函数。
case 135:Alert("Price changed. Try again...")。
RefreshRates(); // 刷新数据。
return(1); // 从函数中退出。
case 136:Alert("No price. Waiting for a new tick...")。
while(RefreshRates()==false) // 读取一个新的刻度线
Sleep(1); // 循环中的延迟。
return(1); // 从函数中退出。
case 137:Alert("Broker is busy. Try again...");
Sleep(3000); // 简单的解决方案。
return(1); // 从函数中退出。
case 146:Alert("The trading subsystem is busy. Try again...");
Sleep(500); // 简单决定
return(1); // 从函数中退出。
// 严重错误
case 2: Alert("General error;)
return(0); // 从函数中退出。
case 5: Alert("旧版本的终端。")。
Work=false; // 不再工作
return(0); // 从函数中退出。
case 64: Alert("Account blocked.");
Work=false; // 不再工作
return(0); // 从函数中退出。
case 133:Alert("禁止交易。")。
return(0); // 从函数中退出。
case 134:Alert("没有足够的钱来执行交易")。
return(0); // 从函数中退出。
默认:Alert("An error has occurred",Error); // Other options
return(0); // 从函数中退出。
}
}
//-------------------------------------------------------------- 11 --
int New_Stop(int Parametr) // 检查停止刺。
{
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);//最小距离。
if (Parametr < Min_Dist) // 如果小于允许的范围。
{
Parametr=Min_Dist; // 设置公差。
Alert("停止距离增加;)
}
return(Parametr); // 返回值。
}