新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1394 1...138713881389139013911392139313941395139613971398139914001401...1953 新评论 Pavel Komarovsky 2021.02.22 12:24 #13931 亲爱的守望者,谁知道呢?,有没有可能从mt5中获取数据,例如到一个网站或一些系统中进行分析https://www.mql5.com/ru/docs/integration/python_metatrader5,有没有类似的api来从mt4中获取数据,而不使用EA? Документация по MQL5: Интеграция / MetaTrader для Python www.mql5.com MetaTrader для Python - Интеграция - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 Tenimagalon 2021.02.22 18:33 #13932 如果你有一个Goko,我想看看怎么写的代码。 Tretyakov Rostyslav 2021.02.22 18:47 #13933 Tenimagalon: 如果你有,我想看看怎么做的代码。 接住 double MyProfit=1000; // уровень профита //+--------------------------------------------------------------------------------------------------------------------+ //| Expert tick function | //+--------------------------------------------------------------------------------------------------------------------+ void OnTick() { //--- if(Open_Pr()>MyProfit)DelOrders(); //--- } //+--------------------------------------------------------------------------------------------------------------------+ //| Суммарный профит в валюте депозита открытых позиций | //+--------------------------------------------------------------------------------------------------------------------+ double Open_Pr(string sy="") { double p = 0; if (sy == "0") sy = Symbol(); for(int pos=OrdersTotal()-1;pos>=0;pos--) { if(OrderSelect(pos,SELECT_BY_POS)==true) { if(OrderSymbol() == sy || sy == ""){p+=OrderProfit()+OrderSwap()+OrderCommission();} } } return(p); } //+--------------------------------------------------------------------------------------------------------------------+ //| Функция удаления и закрытия ордеров | //+--------------------------------------------------------------------------------------------------------------------+ void DelOrders() { while(true) { bool find_order=false; //---- for(int pos=OrdersTotal()-1;pos>=0;pos--) if(OrderSelect(pos,SELECT_BY_POS)==true) if(OrderSymbol()==_Symbol) { find_order=true; //---- if(OrderType()==OP_BUY) { RefreshRates(); int slip=(int)(((Ask-Bid)/Point)*2); if(OrderClose(OrderTicket(),OrderLots(),Bid,slip,clrBlue)==false){} } //---- if(OrderType()==OP_SELL) { RefreshRates(); int slip=(int)(((Ask-Bid)/Point)*2); if(OrderClose(OrderTicket(),OrderLots(),Ask,slip,clrRed)==false){} } //---- if(OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT) if(OrderDelete(OrderTicket(),clrRed)==false){} //---- if(OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT) if(OrderDelete(OrderTicket(),clrBlue)==false){} Alert("Все ордера закрыты!"); } if(find_order==false) Alert("Нет ордеров!");break; } } //+--------------------------------------------------------------------------------------------------------------------+ SanAlex 2021.02.22 19:27 #13934 MakarFX:接住 嗨!我试了一下代码--由于某种原因,它无法关闭。 Vladislav Andruschenko 2021.02.22 19:43 #13935 SanAlex:嗨!我试了一下代码--由于某种原因,它无法关闭。 关于总利润,而不是单独的.... SanAlex 2021.02.22 19:53 #13936 SanAlex:嗨!我试了一下代码--由于某种原因,它无法关闭。 我已经这样做了,很有效!"。 //+------------------------------------------------------------------+ //| MakarFX_MyProfit.mq4 | //| Copyright 2021, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2021, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict input string t2="------------ Exchange TP SL --------"; // input double InpTProfit = 10; // Exchange TP уровень профита input double InpStopLoss = 1000000; // Exchange SL //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- ProfitOnTick(); } //+------------------------------------------------------------------+ //| Суммарный профит в валюте депозита открытых позиций | //+------------------------------------------------------------------+ bool ProfitOnTick(void) { bool res=false; double PROFIT_BUY=0.00; double PROFIT_SELL=0.00; for(int i=OrdersTotal()-1; i>=0; i--) // returns the number of open positions { if(OrderSelect(i,SELECT_BY_POS) && OrderSymbol()==Symbol()) { if(OrderSymbol()==Symbol() && OrderType()==OP_BUY) { PROFIT_BUY=PROFIT_BUY+NormalizeDouble(OrderProfit(),2); } if(OrderSymbol()==Symbol() && OrderType()==OP_SELL) { PROFIT_SELL=PROFIT_SELL+NormalizeDouble(OrderProfit(),2); } } } int Close_ticketb=0; int totalb=OrdersTotal(); int b = 0; for(b = totalb; b >=0; b--) { if(OrderSelect(b,SELECT_BY_POS) && OrderSymbol()==Symbol()) { //OrderSelect(i,SELECT_BY_POS); if(OrderSymbol()==Symbol() && OrderType()==OP_BUY) { if(PROFIT_BUY<-InpStopLoss || PROFIT_BUY>=InpTProfit) { Close_ticketb = OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),5); PlaySound("ok.wav"); } } } res=true; } int Close_tickets=0; int totals=OrdersTotal(); int s = 0; for(s = totals; s >=0; s--) { if(OrderSelect(s,SELECT_BY_POS) && OrderSymbol()==Symbol()) { if(OrderSymbol()==Symbol() && OrderType()==OP_SELL) { if(PROFIT_SELL<-InpStopLoss || PROFIT_SELL>=InpTProfit) { Close_tickets = OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_ASK),5); PlaySound("ok.wav"); } } } res=true; } //--- result return(res); } //+------------------------------------------------------------------+ SanAlex 2021.02.22 19:55 #13937 Vladislav Andruschenko: 利润总额,不分开.... 哦,我明白了!那我就道歉了。 我只是在跟你开玩笑。 //+------------------------------------------------------------------+ //| Check closing | //+------------------------------------------------------------------+ bool ProfitTarget(void) { bool res=false; if(AccountInfoDouble(ACCOUNT_EQUITY)>=TargetProfit) { CloseAllOrders(); Sleep(SLEEPTIME*1000); CloseAllOrders(); ExpertRemove(); DeleteChart(); PlaySound("expert.wav"); res=true; } //--- result return(res); } //+------------------------------------------------------------------+ SanAlex 2021.02.22 20:09 #13938 SanAlex:哦,我明白了!那我就道歉了。这就是我搞砸的原因。 它在这里,准备战斗!!!。 //+------------------------------------------------------------------+ //| MakarFX_MyProfit.mq4 | //| Copyright 2021, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2021, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #include <stdlib.mqh> //--- Inputs input string t="------------- Balans Parameters -----"; // input string Template = "ADX"; // Имя шаблона(without '.tpl') input double TargetProfit = 1000000; // Баланс + Прибыль(прибавить к балансу) input string t2="------------ Exchange TP SL --------"; // input double InpTProfit = 10; // Exchange TP уровень профита input double InpStopLoss = 1000000; // Exchange SL //--- uint SLEEPTIME = 1; bool CloseOpenOrders = true; double Price[2]; ENUM_TIMEFRAMES TimeFrame; // Change TimeFrame - Current = dont changed //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- ProfitOnTick(); ProfitTarget(); } //+------------------------------------------------------------------+ //| Суммарный профит в валюте депозита открытых позиций | //+------------------------------------------------------------------+ bool ProfitOnTick(void) { bool res=false; double PROFIT_BUY=0.00; double PROFIT_SELL=0.00; for(int i=OrdersTotal()-1; i>=0; i--) // returns the number of open positions { if(OrderSelect(i,SELECT_BY_POS) && OrderSymbol()==Symbol()) { if(OrderSymbol()==Symbol() && OrderType()==OP_BUY) { PROFIT_BUY=PROFIT_BUY+NormalizeDouble(OrderProfit(),2); } if(OrderSymbol()==Symbol() && OrderType()==OP_SELL) { PROFIT_SELL=PROFIT_SELL+NormalizeDouble(OrderProfit(),2); } } } int Close_ticketb=0; int totalb=OrdersTotal(); int b = 0; for(b = totalb; b >=0; b--) { if(OrderSelect(b,SELECT_BY_POS) && OrderSymbol()==Symbol()) { //OrderSelect(i,SELECT_BY_POS); if(OrderSymbol()==Symbol() && OrderType()==OP_BUY) { if(PROFIT_BUY<-InpStopLoss || PROFIT_BUY>=InpTProfit) { Close_ticketb = OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),5); PlaySound("ok.wav"); } } } res=true; } int Close_tickets=0; int totals=OrdersTotal(); int s = 0; for(s = totals; s >=0; s--) { if(OrderSelect(s,SELECT_BY_POS) && OrderSymbol()==Symbol()) { if(OrderSymbol()==Symbol() && OrderType()==OP_SELL) { if(PROFIT_SELL<-InpStopLoss || PROFIT_SELL>=InpTProfit) { Close_tickets = OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_ASK),5); PlaySound("ok.wav"); } } } res=true; } //--- result return(res); } //+------------------------------------------------------------------+ //| Check closing | //+------------------------------------------------------------------+ bool ProfitTarget(void) { bool res=false; if(AccountInfoDouble(ACCOUNT_EQUITY)>=TargetProfit) { CloseAllOrders(); Sleep(SLEEPTIME*1000); CloseAllOrders(); ExpertRemove(); DeleteChart(); PlaySound("expert.wav"); res=true; } //--- result return(res); } //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ void CloseAllOrders(void) { int iOrders=OrdersTotal()-1, i; if(CloseOpenOrders) { for(i=iOrders; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && (OrderType()<=OP_SELL) && GetMarketInfo() && !OrderClose(OrderTicket(),OrderLots(),Price[1-OrderType()],0)) Print(OrderError()); if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderDelete(OrderTicket())) Print(OrderError()); } } } } //+------------------------------------------------------------------+ //| Function..: OrderError | //+------------------------------------------------------------------+ string OrderError(void) { int iError=GetLastError(); return(StringConcatenate("Order:",OrderTicket()," GetLastError()=",iError," ",ErrorDescription(iError))); } //+------------------------------------------------------------------+ //| Function..: GetMarketInfo | //+------------------------------------------------------------------+ bool GetMarketInfo(void) { RefreshRates(); Price[0]=MarketInfo(OrderSymbol(),MODE_ASK); Price[1]=MarketInfo(OrderSymbol(),MODE_BID); double dPoint=MarketInfo(OrderSymbol(),MODE_POINT); if(dPoint==0) return(false); return(Price[0]>0.0 && Price[1]>0.0); } //+------------------------------------------------------------------+ //| start function | //+------------------------------------------------------------------+ void DeleteChart(void) { long currChart,prevChart=ChartFirst(); int i=0,limit=100; bool errTemplate; while(i<limit) { currChart=ChartNext(prevChart); if(TimeFrame!=PERIOD_CURRENT) { ChartSetSymbolPeriod(prevChart,ChartSymbol(prevChart),TimeFrame); } errTemplate=ChartApplyTemplate(prevChart,Template+".tpl"); if(!errTemplate) { Print("Error ",ChartSymbol(prevChart),"-> ",GetLastError()); } if(currChart<0) break; Print(i,ChartSymbol(currChart)," ID =",currChart); prevChart=currChart; i++; } } //+------------------------------------------------------------------+ Tretyakov Rostyslav 2021.02.22 20:57 #13939 SanAlex:它在这里,准备战斗!!!。 为什么要作弊? 只要把正确的符号放在这里 Open_Pr(Symbol()) 而且一切都会好起来的。 P.S. 萨沙,你没有计算交换和佣金。 SanAlex 2021.02.22 21:14 #13940 MakarFX: 为什么要作弊? 把正确的符号放在这里。 而且一切都会好起来的。 P.S. 萨沙,你没有考虑到交换和佣金 我已经习惯了这样的设置--关于佣金和掉期--这都是废话,我关心的是利润--我设置了100,让它在90时为我关闭,这也很好--但有时它也在110时关闭。 我不知道经纪人是什么样的行动和如何关闭的,但这个功能是根据设置中的设定(金额)来工作的。 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 例如,我在设置中输入了5,它就关闭了5.20。 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 或者另一个例子 - 我在设置中指定,在所有专家顾问所在的货币对上(他们都有相同的设置),总利润为70 000,我关闭了所有的东西 - 我最终有15个损失。 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 我怀疑不是每个人都能理解我们在谈论什么。- 至于总体利润,是一回事--但每一对的利润是不同的。你必须在每一对上放一个专家顾问。 像这样!!!。 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 当函数对总利润起作用时,它将一次性改变所有开放图表的模式。 你可以创建你自己的模式,给它一个名字--把它作为一个专家顾问,用一个新的价格或任何你想要的东西。 1...138713881389139013911392139313941395139613971398139914001401...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
,有没有可能从mt5中获取数据,例如到一个网站或一些系统中进行分析https://www.mql5.com/ru/docs/integration/python_metatrader5
,有没有类似的api来从mt4中获取数据,而不使用EA?
如果你有,我想看看怎么做的代码。
接住
接住
嗨!我试了一下代码--由于某种原因,它无法关闭。
嗨!我试了一下代码--由于某种原因,它无法关闭。
嗨!我试了一下代码--由于某种原因,它无法关闭。
我已经这样做了,很有效!"。
利润总额,不分开....
哦,我明白了!那我就道歉了。
我只是在跟你开玩笑。
哦,我明白了!那我就道歉了。
这就是我搞砸的原因。
它在这里,准备战斗!!!。
它在这里,准备战斗!!!。
为什么要作弊?
只要把正确的符号放在这里
Open_Pr(Symbol())
而且一切都会好起来的。
P.S. 萨沙,你没有计算交换和佣金。
MakarFX:
为什么要作弊?
把正确的符号放在这里。
而且一切都会好起来的。
P.S. 萨沙,你没有考虑到交换和佣金
我已经习惯了这样的设置--关于佣金和掉期--这都是废话,我关心的是利润--我设置了100,让它在90时为我关闭,这也很好--但有时它也在110时关闭。
我不知道经纪人是什么样的行动和如何关闭的,但这个功能是根据设置中的设定(金额)来工作的。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
例如,我在设置中输入了5,它就关闭了5.20。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
或者另一个例子 - 我在设置中指定,在所有专家顾问所在的货币对上(他们都有相同的设置),总利润为70 000,我关闭了所有的东西 - 我最终有15个损失。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
我怀疑不是每个人都能理解我们在谈论什么。- 至于总体利润,是一回事--但每一对的利润是不同的。你必须在每一对上放一个专家顾问。
像这样!!!。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
当函数对总利润起作用时,它将一次性改变所有开放图表的模式。
你可以创建你自己的模式,给它一个名字--把它作为一个专家顾问,用一个新的价格或任何你想要的东西。