MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1394 1...138713881389139013911392139313941395139613971398139914001401...1953 新しいコメント Pavel Komarovsky 2021.02.22 12:24 #13931 親愛なる番人、誰が知っている。 例えばmt5からウェブサイトや分析のためのいくつかのシステムにデータを取得することは可能ですか https://www.mql5.com/ru/docs/integration/python_metatrader5 EAを使用せずにmt4からデータを取得するための同様のapiはありますか? Документация по MQL5: Интеграция / MetaTrader для Python www.mql5.com MetaTrader для Python - Интеграция - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 Tenimagalon 2021.02.22 18:33 #13932 ゴコがあるなら、書き方のコードも見てみたい。 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()) で、すべてがうまくいく。 追伸:サーシャさん、スワップやコミッションをカウントしてませんでしたね。 SanAlex 2021.02.22 21:14 #13940 MakarFX: なぜ不正をするのか? ここに正しい記号を入れる。 で、すべてがうまくいく。 追伸:サーシャ、スワップやコミッションを考慮していない 私はこのような設定に慣れました - そして手数料とスワップについて - それはすべて無意味です、私は利益を気にします - 私は100を設定し、90で私のために閉じさせ、それはまた良いです - しかし、時にはそれは110で閉じることもあります。 ブローカーがどのようなアクションで、どのようにクローズするのかわかりませんが、設定で設定した(金額)により機能が働きます。 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 例えば、設定に5を入れたら、5.20で終了しました。 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ または別の例 - 私はエキスパートアドバイザーがあるすべてのペアで(彼らはすべて同じ設定を持って いる)70 000の合計利益のために私はすべてを閉じていることを設定で指定していた - 私は15の損失で終わった。 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 全員が理解しているわけではないのではと勘ぐってしまいます。- 全体の利益としては、一つですが、各ペアの利益は異なります。すべてのペアにExpert Advisorを付ける必要があります。 このように ! \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ トータルプロフィットで機能する場合、開いている全てのチャートのパターンを一度に変更します。 独自のパターンを作成し、名前を付け、新しい価格や好きなものを使ってExpert Advisorとして使用することができます。 1...138713881389139013911392139313941395139613971398139914001401...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
例えばmt5からウェブサイトや分析のためのいくつかのシステムにデータを取得することは可能ですか https://www.mql5.com/ru/docs/integration/python_metatrader5
EAを使用せずにmt4からデータを取得するための同様のapiはありますか?
もしあれば、そのやり方のコードを見てみたいです。
キャッチ
キャッチ
こんにちは!私はコードを試してみました - それはなぜか閉じません
こんにちは!私はコードを試してみました - それはなぜか閉じません
こんにちは!コードを試してみましたが、なぜか閉じません。
こんな感じでやってます、うまくいってます
利益合計、別々ではなく・・・。
なるほど!では、謝ります。
ちょっとからかっただけだよ。
そうですか、では失礼しました。
それで失敗したんです。
さあ、戦闘準備だ!!!!
さあ、戦闘準備だ!!!!
なぜ不正をするのか?
ここに正しい記号を入れるだけ
Open_Pr(Symbol())
で、すべてがうまくいく。
追伸:サーシャさん、スワップやコミッションをカウントしてませんでしたね。
MakarFX:
なぜ不正をするのか?
ここに正しい記号を入れる。
で、すべてがうまくいく。
追伸:サーシャ、スワップやコミッションを考慮していない
私はこのような設定に慣れました - そして手数料とスワップについて - それはすべて無意味です、私は利益を気にします - 私は100を設定し、90で私のために閉じさせ、それはまた良いです - しかし、時にはそれは110で閉じることもあります。
ブローカーがどのようなアクションで、どのようにクローズするのかわかりませんが、設定で設定した(金額)により機能が働きます。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
例えば、設定に5を入れたら、5.20で終了しました。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
または別の例 - 私はエキスパートアドバイザーがあるすべてのペアで(彼らはすべて同じ設定を持って いる)70 000の合計利益のために私はすべてを閉じていることを設定で指定していた - 私は15の損失で終わった。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
全員が理解しているわけではないのではと勘ぐってしまいます。- 全体の利益としては、一つですが、各ペアの利益は異なります。すべてのペアにExpert Advisorを付ける必要があります。
このように !
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
トータルプロフィットで機能する場合、開いている全てのチャートのパターンを一度に変更します。
独自のパターンを作成し、名前を付け、新しい価格や好きなものを使ってExpert Advisorとして使用することができます。