モールス符号 - ページ 2 12345678910 新しいコメント Aliaksandr Hryshyn 2017.04.05 12:58 #11 活用する)) input uint m=2314;//Входной набор двоичных данных в виде десятичного числа ... int i1; for(i1=0;i1<32;i1++) //Пример получения каждого бита с позиции i1 начиная с младших бит { Print((m>>i1)&1); } Vladimir Karputov 2017.04.05 13:04 #12 Aliaksandr Hryshyn:使用する))。 実質的には(4)なのですが、問題は「ユーザーが見るもの」です。2314 "という数字が表示されます。ブル、ベア - ローソク足の数とタイプに関するどのような情報?そう、情報ゼロ。入力パラメータに "101 "または "011 "がある場合のオプションを探してるんだけど・・・。しかし、文字列を介して可能である。しかし、テスターで文字列を実行することはできません :( .バダです。 Sergey Dzyublik 2017.04.05 13:07 #13 НО: string не прогонишь в тестере テスターやストリングのどこが悪いのか教えてください(MT4/MT5には積極的に取り組んでいません)。 Vladimir Pastushak 2017.04.05 13:11 #14 Vladimir Karputov: これは実質的に(4)ですが、問題は「ユーザーが見るべきもの」です。NUMBER "2314 "を見ることになる。この数字とローソク足の種類は、強気、弱気とどんな情報を持っているのでしょうか?そう、情報ゼロ。入力パラメータに "101 "または "011 "がある場合のオプションを探してるんだけど・・・。でも、文字列なら可能です。しかし、テスターで文字列を実行することはできません :( .悲しみ トレーディング、自動売買システム、ストラテジーテストに関するフォーラム モールス符号 ウラジミール・パストゥシャク さん 2017.04.05 12:45 入力パラメータをint型にした後、int型をstringに変更してパースする .... Sergey Dzyublik 2017.04.05 13:15 #15 え、テスターで文字列の値をインクリメントできないの? ファイルを作成し、そこにすべての文字列を入れ、文字列のインデックスを使って何をテストしたいかを決定します。 インデックスをインクリメントすることができる Vitalii Ananev 2017.04.05 13:24 #16 ビット演算 >>, <<, & , | , ^ を試されましたか? Vladimir Karputov 2017.04.05 13:28 #17 Sergey Dzyublik: え、テスターで文字列の値をインクリメントできないの?ファイルを作成し、そこにすべての文字列を入れ、文字列のインデックスを使って何をテストしたいかを決定します。インデックスをインクリメントすることができる。 いや、無理でしょう。最適化しようとすると、ストラテジーテスターで すべての文字列がグレーアウトしてしまいます。 Aliaksandr Hryshyn 2017.04.05 13:32 #18 Vladimir Karputov: これは実質的に(4)ですが、問題は「ユーザーが見るべきもの」です。2314 "という数字が表示されます。ブル、ベア - ローソク足の数とタイプに関するどのような情報?そう、情報ゼロ。入力パラメータに "101 "または "011 "がある場合のオプションを探してるんだけど・・・。でも、文字列なら可能です。しかし、テスターで文字列を実行することはできません :( .バダです。 そうなると、残された選択肢はひとつしかない。extern int bars=4;//Количество используемых свечей extern bool bar1=true;//1-я свеча extern bool bar2=true;//... extern bool bar3=false; extern bool bar4=true; extern bool bar5=true; ... Vladimir Karputov 2017.04.05 13:39 #19 今のところ、ストリングに落ち着いています。バージョン "1.000": ローソク足の組み合わせの入力パラメータ(文字列).//+------------------------------------------------------------------+ //| Morse code.mq5 | //| Copyright © 2017, Vladimir Karputov | //| http://wmua.ru/slesar/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2017, Vladimir Karputov" #property link "http://wmua.ru/slesar/" #property version "1.000" #property description "Bull candle - \"1\", bear candle - \"0\"" //--- #include <Trade\Trade.mqh> CTrade m_trade; // trading object //--- input string InpMorseCode = "101"; // maximum quantity of symbols: 5 input ENUM_POSITION_TYPE InpPosType = POSITION_TYPE_BUY; // posinion type input double InpLot = 0.1; // lot input ulong m_magic = 88430400; // magic number input ulong m_slippage = 30; // slippage //--- string sExtMorseCode=""; int max_len=5; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- sExtMorseCode=InpMorseCode; StringTrimLeft(sExtMorseCode); StringTrimRight(sExtMorseCode); if(StringLen(sExtMorseCode)>max_len) { Print("PARAMETERS INCORRECT: Code length is more than ",IntegerToString(max_len)," characters"); return(INIT_PARAMETERS_INCORRECT); } if(StringLen(sExtMorseCode)==0) { Print("PARAMETERS INCORRECT: Length of a code is equal to zero"); return(INIT_PARAMETERS_INCORRECT); } if(!CheckCode(sExtMorseCode)) { Print("PARAMETERS INCORRECT"); return(INIT_PARAMETERS_INCORRECT); } //--- m_trade.SetExpertMagicNumber(m_magic); if(IsFillingTypeAllowed(Symbol(),SYMBOL_FILLING_IOC)) m_trade.SetTypeFilling(ORDER_FILLING_IOC); m_trade.SetDeviationInPoints(m_slippage); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- we work only at the time of the birth of new bar static datetime PrevBars=0; datetime time_0=iTime(0); if(time_0==PrevBars) return; PrevBars=time_0; int count=StringLen(sExtMorseCode); MqlRates rates[]; ArraySetAsSeries(rates,true); int copied=CopyRates(NULL,0,1,count,rates); //--- Example: //--- rates[2].time -> D'2015.05.28 00:00:00' //--- rates[0].time -> D'2015.06.01 00:00:00' if(copied<=0) { Print("Error copying price data ",GetLastError()); return; } bool result=true; for(int i=0;i<StringLen(sExtMorseCode);i++) { if(sExtMorseCode[i]=='0') { if(rates[i].open<rates[i].close) { result=false; break; } } else if(sExtMorseCode[i]=='1') { if(rates[i].open>rates[i].close) { result=false; break; } } } if(!result) return; //--- if(InpPosType==POSITION_TYPE_BUY) m_trade.Buy(InpLot); else m_trade.Sell(InpLot); int d=0; } //+------------------------------------------------------------------+ //| TradeTransaction function | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { //--- } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool CheckCode(const string text) { bool result=true; for(int i=0;i<StringLen(text);i++) { if(text[i]!='0' && text[i]!='1') return(false); } //--- return(result); } //+------------------------------------------------------------------+ //| Checks if the specified filling mode is allowed | //+------------------------------------------------------------------+ bool IsFillingTypeAllowed(string symbol,int fill_type) { //--- Obtain the value of the property that describes allowed filling modes int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE); //--- Return true, if mode fill_type is allowed return((filling & fill_type)==fill_type); } //+------------------------------------------------------------------+ //| Get Time for specified bar index | //+------------------------------------------------------------------+ datetime iTime(const int index,string symbol=NULL,ENUM_TIMEFRAMES timeframe=PERIOD_CURRENT) { if(symbol==NULL) symbol=Symbol(); if(timeframe==0) timeframe=Period(); datetime Time[1]; datetime time=0; int copied=CopyTime(symbol,timeframe,index,1,Time); if(copied>0) time=Time[0]; return(time); } //+------------------------------------------------------------------+ OnInit()でのチェックキャリッジキャラクタ、左右のスペースとタブが最初に削除されます。最大長の超過をチェックする(このコードでは "5")。ゼロ長チェック0 "と "1 "のみをチェックする(CheckCode)OnTick()では、すでにローソク足の種類を 比較し、入力パラメータ(ローソク足の組み合わせ)を配列として参照しています。 for(int i=0;i<StringLen(sExtMorseCode);i++) { if(sExtMorseCode[i]=='0') { if(rates[i].open<rates[i].close) { result=false; break; } } else if(sExtMorseCode[i]=='1') { if(rates[i].open>rates[i].close) { result=false; break; } } } ファイル: Morse_code.mq5 12 kb Vasiliy Sokolov 2017.04.05 14:04 #20 Vladimir Karputov: これは実質的に(4)ですが、問題は「ユーザーが見るべきもの」です。2314 "という数字が表示されます。ブル、ベア - ローソク足の数とタイプに関するどのような情報?そう、情報ゼロ。入力パラメータに "101 "または "011 "がある場合のオプションを探してるんだけど・・・。でも、文字列なら可能です。しかし、テスターで文字列を実行することはできません :( .バダです。 問題は、わかりやすさだけではありません。DECに13番があるとすると、1101か001101か0001101か、どんなパターンなのか?結局、すべての組み合わせで同じ数字「13」が得られる。 12345678910 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
活用する))
使用する))。
実質的には(4)なのですが、問題は「ユーザーが見るもの」です。2314 "という数字が表示されます。ブル、ベア - ローソク足の数とタイプに関するどのような情報?そう、情報ゼロ。入力パラメータに "101 "または "011 "がある場合のオプションを探してるんだけど・・・。
しかし、文字列を介して可能である。しかし、テスターで文字列を実行することはできません :( .バダです。
これは実質的に(4)ですが、問題は「ユーザーが見るべきもの」です。NUMBER "2314 "を見ることになる。この数字とローソク足の種類は、強気、弱気とどんな情報を持っているのでしょうか?そう、情報ゼロ。入力パラメータに "101 "または "011 "がある場合のオプションを探してるんだけど・・・。
でも、文字列なら可能です。しかし、テスターで文字列を実行することはできません :( .悲しみ
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
モールス符号
ウラジミール・パストゥシャク さん 2017.04.05 12:45
入力パラメータをint型にした後、int型をstringに変更してパースする ....
ファイルを作成し、そこにすべての文字列を入れ、文字列のインデックスを使って何をテストしたいかを決定します。
インデックスをインクリメントすることができる
え、テスターで文字列の値をインクリメントできないの?ファイルを作成し、そこにすべての文字列を入れ、文字列のインデックスを使って何をテストしたいかを決定します。インデックスをインクリメントすることができる。
いや、無理でしょう。最適化しようとすると、ストラテジーテスターで すべての文字列がグレーアウトしてしまいます。
これは実質的に(4)ですが、問題は「ユーザーが見るべきもの」です。2314 "という数字が表示されます。ブル、ベア - ローソク足の数とタイプに関するどのような情報?そう、情報ゼロ。入力パラメータに "101 "または "011 "がある場合のオプションを探してるんだけど・・・。
でも、文字列なら可能です。しかし、テスターで文字列を実行することはできません :( .バダです。
そうなると、残された選択肢はひとつしかない。
今のところ、ストリングに落ち着いています。
バージョン "1.000": ローソク足の組み合わせの入力パラメータ(文字列).
OnInit()でのチェック
これは実質的に(4)ですが、問題は「ユーザーが見るべきもの」です。2314 "という数字が表示されます。ブル、ベア - ローソク足の数とタイプに関するどのような情報?そう、情報ゼロ。入力パラメータに "101 "または "011 "がある場合のオプションを探してるんだけど・・・。
でも、文字列なら可能です。しかし、テスターで文字列を実行することはできません :( .バダです。