さようならロボット - こんにちはマラスムス - ページ 4 1234567891011...16 新しいコメント Andrei01 2014.09.10 02:05 #31 Mislaid:配列のout-of-boundsの制御は、コードに行表示があり、非常に便利です。昔は、ゼロで割って、好きなところを見てください、という感じでした。しかも、エラーが表示されないとなると、なおさらだった。 その方法を例として教えてください。この機能については、ドキュメントに何も書かれていませんでした。 Mislaid 2014.09.10 02:26 #32 Andrei01: その方法を具体的に教えてください。ドキュメントには、この機能についての記述はありませんでした。 そのとおりです。今は何もしなくていいんです。エキスパート」タブを開いて、ログを読んでみてください。エラーが表示された場合は、その旨のメッセージが表示されます。ようなものです。 array out of range...... コードの行番号を示す。 Andrei01 2014.09.10 02:59 #33 Mislaid: エキスパート」タブを開いて、ログを読んでみてください。 インジケーターやスクリプトにも使えますか? pansa 2014.09.10 03:18 #34 Pavlick:スクリプト/インジケーター名の最初の文字の大文字と小文字を変えてみてください。私も一度苦労していますhttps://www.mql5.com/ru/forum/152533/page2#982156P.S.: さて、文字列をchar[]に変更します。 答えろ、パブリク! パブリクよかったね! あなたのコードはすぐに機能しました これで スクリプト! あとは、インジケーターに装着するのみです あなたのコードがインジケーターに挿入されました! 一難去ってまた一難 インジケータは名前を認識したくない のスクリプトで、名前を書きました。 スクリプトが呼び出される場所。 あとは、スクリプトが 天下御免 お願いします よろしくお願いします プンサ Victor Nikolaev 2014.09.10 03:54 #35 pansa: 答えろ、パブリク! パブリックさん、さすがです。 あなたのコードはすぐに機能しました。 を実行できるようになりました。 台本だ! あとは、インジケーターに装着するのみです あなたのコードがインジケーターに挿入されました! 一難去ってまた一難 インジケータは名前を認識したくない のスクリプトで、名前を書きました。 スクリプトが呼び出される場所。 あとは台本だけ 天下御免 お願いします よろしくお願いします パンザ 必要なら手伝うよ Dmitry Fedoseev 2014.09.10 05:07 #36 この警告には、まだ1つ、非常に良いキャッチボールがあります(少なくとも、ありました)。論理 式の優先順位が変更されました。優先順位が括弧で明示的に定義されていない場合、コンパイラは警告を与えるだけで、論理式は以前とは全く異なる効果を持つようになった。きっとエラーなのでしょう。誰かが警告で救済することにしたのでしょう、その中に論理式に関する警告があります。 pansa 2014.09.10 06:08 #37 Vinin: 何かあれば、お手伝いしますよ。 Vininさん、こんにちは。 どうもありがとうございました 助けたい!という気持ちから の概要についてお送りします。 コンポスタースクリプトコール パンサー ____________________________________ Pavlikさん、こんにちは。 一例をご紹介しますと スクリプトコールがどのように構成されたか コンポスターで、今は使えない。 検討中 パンサー //+------------------------------------------------------------------+ //|sample_execute_scriptです。mq4|(エムキューブ //+------------------------------------------------------------------+ #import "user32.dll" int RegisterWindowMessageA(string MessageName)。 int PostMessageA(int hwnd, int msg, int wparam, string Name); void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo)。 #インポート int start() { int winHandle = WindowHandle( Symbol(),Period()); // // // if( signal < 0 && trigl==true && buy == true ) {StartScript( winHandle, "SchliesenProfitOrders" ); } {スタート。 // // // void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false) { int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message"); PostMessageA(hWnd, MessageNumber, 16, ScriptName)を実行します。 if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); }. } void ClearConfigDialog() { Sleep(100)です。 keybd_event(13, 0, 0, 0); } // // // return(0)です。 Goodbye robot - hello Execute an existing EA MQL4 EAからチャートにインジケータを追加する。 Boris 2014.09.10 07:31 #38 pansa: Vininさん、こんにちは。どうもありがとうございました 助けたい!という気持ちからの概要についてお送りします。コンポスタースクリプトコールパンサー____________________________________Pavlikさん、こんにちは。一例をご紹介しますとスクリプトコールがどのように構成されたかコンポスターで、今は使えない。検討中パンサーSRCを クリックしてコードを貼り 付けるのは、本当に難しいのでしょうか!//+------------------------------------------------------------------+ //| sample_execute_script.mq4 | //+------------------------------------------------------------------+ #import "user32.dll" int RegisterWindowMessageA(string MessageName); int PostMessageA(int hwnd, int msg, int wparam, string Name); void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo); #import int start() { int winHandle = WindowHandle( Symbol(), Period() ); // // // if(signal < 0 && trigl==true && buy == true) { StartScript(winHandle, "SchliesenProfitOrders" ); } // // // } void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false) { int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message"); PostMessageA(hWnd, MessageNumber, 16, ScriptName); if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); } } void ClearConfigDialog() { Sleep(100); keybd_event(13, 0, 0, 0); } // // // return(0); 削除済み 2014.09.10 08:00 #39 pansa: これで問題なく使えるはずです。void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false) { char buf[]; StringToCharArray("MetaTrader4_Internal_Message", buf); int MT4InternalMsg = RegisterWindowMessageA(buf); StringToCharArray(ScriptName, buf); SendMessageA(hWnd, MT4InternalMsg, 16, buf); if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); } } void ClearConfigDialog() { Sleep(100); keybd_event(13, 0, 0, 0); }また、スクリプトの頭文字の大文字小文字も忘れてはいけません。例えば、「test」というスクリプトが始まらない場合は、「Test」で試してみてください。敬称略、Pavlik )) pansa 2014.09.10 10:14 #40 Pavlick:これで問題なく使えるはずです。また、スクリプトの頭文字の大文字小文字も忘れてはいけません。例えば、「test」というスクリプトが実行されない場合は、「Test」を試してみてください。Regards, Pavlik ))) Pavlikさん、こんにちは。 リファインと インジケータに全部入れてみた が、インジケータはそれを望んでいない。 ようすをうかがう を実現するために! パンザ //+------------------------------------------------------------------+ //|AltrEND_Signal。mq4|(エムキューブ //| Copyright 2014, MetaQuotes Software Corp. //|httpsを 使用しています。//wwwmql5.com|コメント||電子書籍ストア「BookLive! //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //|AltrTrend_Signal_v2_2_alertです。mq4| (エムキューブ //|ラムダス - 変換のみ| 電子書籍ストア「BookLive! //+------------------------------------------------------------------+ #property copyright "著者 - OlegVS, GOODMAN" #プロパティの厳密さ #import "user32.dll" int RegisterWindowMessageA(uchar &lParam[]); int SendMessageA(int hWnd, int Msg, int wParam, char &lParam[]); void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo)。 #インポート #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 DeepSkyBlue #property indicator_color2 オレンジレッド #property indicator_width1 1 #property indicator_width2 1 //---- 入力パラメータ extern bool Alert_message=true; extern int Time_alert_minutes=60; // ?・・・・・・・・・・???????????????????60 ?????. extern int K = 30; extern double Kstop = 0.5; extern inttern Kperiod = 150; extern int PeriodADX = 7; //14; extern int CountBars = 100; //---- バッファ double val1[]。 double val2[]。 double AlertTime; //+------------------------------------------------------------------+ //| カスタムインジケータ 初期化関数 //+------------------------------------------------------------------+ int init() { 文字列のshort_name。 //---- インジケータ線 IndicatorBuffers(1)です。 SetIndexStyle(0,DRAW_ARROW)を設定します。 SetIndexArrow(0,241)。 IndicatorBuffers(2)です。 SetIndexStyle(1,DRAW_ARROW)を設定します。 SetIndexArrow(1,242)。 SetIndexBuffer(0,val1)を設定します。 SetIndexBuffer(1,val2)を設定します。 if(CountBars>=Bars) CountBars=Bars。 SetIndexDrawBegin(0, Bars - CountBars + PeriodADX ); SetIndexDrawBegin(1, Bars - CountBars + PeriodADX ); //---- return(0)です。 } //+------------------------------------------------------------------+ //| AltrTrend_Signal_v2_2| //+------------------------------------------------------------------+ int start() { int i, shift, counted_bars = IndicatorCounted(); //---- if(counted_bars<0) return(-1); //---- int i1, i2, t_per; double Range、AvgRange、smin、smax、SsMax、SsMin、SSP、price。 bool uptrend, old; //---- if(Bars <=PeriodADX+ 1) return(0)です。 //---- for(shift = CountBars - PeriodADX ; shift >= 0; shift--) { SSP = MathCeil(Kperiod / iADX(NULL, 0, PeriodADX , PRICE_CLOSE, MODE_MAIN, 1)); レンジ=0。 AvgRange = 0; for(i1 = shift; i1 <= shift + SSP; i1++) { AvgRange = AvgRange + MathAbs(High[i1] - Low[i1]); } Range = AvgRange / (SSP + 1)。 //---- SsMax = High[shift]; SsMin = Low[shift]; for(i2 = shift; i2 <= shift + SSP - 1; i2++) { price = High[i2]; if(SsMax < 価格) SsMax= price; 価格 = Low[i2]; if(SsMin >= 価格) SsMin = price; } //---- smin = SsMin + (SsMax - SsMin)*K / 100; smax = SsMax - (SsMax - SsMin)*K / 100; val1[shift]=0.0と する。 val2[shift]=0.0とする。 if(クローズ[シフト] < スミン) { uptrend = false とする。 } if(クローズ[シフト] > smax) { uptrend = trueとする。 } if(uptrend != old && uptrend == true) { val1[shift] = Low[shift] - Range*Kstop; } if(uptrend != old && uptrend == false) { val2[shift] = High[shift] + Range*Kstop; } old = アップトレンド。 }void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false) { { char buf[]; StringToCharArray("MetaTrader4_Internal_Message",buf;)。 int MT4InternalMsg = RegisterWindowMessageA(buf); StringToCharArray("fPlayer", buf); SendMessageA(hWnd, MT4InternalMsg, 16, buf)を送信します。 if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); }. } void ClearConfigDialog() { Sleep(100)です。 keybd_event(13, 0, 0, 0); } //---- 警告 if (Period()<Time_alert_minutes) t_per=Period(); else t_per=Time_alert_minutes; // ?!!!?<Time_alert, ???????????????????????????????????????.????????????????????. if (Alert_message==true && CurTime()>AlertTime && val1[0]!=0.0) { アラート(Symbol(), "+++ BUY !!!")+++", "//AltrTrend_Signal_v2_2_alert "); AlertTime=CurTime() + (t_per - MathMod(TimeMinute(CurTime()), t_per))*60; //PlaySound("payment.wav")を実行します。 fPlayer ;//スクリプト } if (Alert_message==true && CurTime()>AlertTime && val2[0]!=0.0) { アラート(Symbol(), "+++ SELL !!!!+++", "//AltrTrend_Signal_v2_2_alert"); AlertTime=CurTime() + (t_per - MathMod(TimeMinute(CurTime()), t_per))*60; // PlaySound("payment.wav")を実行する。 fPlayer です。 } return(0)です。 } //+------------------------------------------------------------------+ Goodbye robot - hello 信号システム(ASCTrend、その他モディフィケーション) [アーカイブ!】どんなエキスパートやインジケーターでも無料で書きます。 1234567891011...16 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
配列のout-of-boundsの制御は、コードに行表示があり、非常に便利です。昔は、ゼロで割って、好きなところを見てください、という感じでした。しかも、エラーが表示されないとなると、なおさらだった。
その方法を具体的に教えてください。ドキュメントには、この機能についての記述はありませんでした。
そのとおりです。今は何もしなくていいんです。エキスパート」タブを開いて、ログを読んでみてください。エラーが表示された場合は、その旨のメッセージが表示されます。ようなものです。
array out of range...... コードの行番号を示す。
エキスパート」タブを開いて、ログを読んでみてください。
スクリプト/インジケーター名の最初の文字の大文字と小文字を変えてみてください。私も一度苦労していますhttps://www.mql5.com/ru/forum/152533/page2#982156
P.S.: さて、文字列をchar[]に変更します。
答えろ、パブリク!
パブリクよかったね!
あなたのコードはすぐに機能しました
これで
スクリプト!
あとは、インジケーターに装着するのみです
あなたのコードがインジケーターに挿入されました!
一難去ってまた一難
インジケータは名前を認識したくない
のスクリプトで、名前を書きました。
スクリプトが呼び出される場所。
あとは、スクリプトが
天下御免
お願いします
よろしくお願いします
プンサ
答えろ、パブリク!
パブリックさん、さすがです。
あなたのコードはすぐに機能しました。
を実行できるようになりました。
台本だ!
あとは、インジケーターに装着するのみです
あなたのコードがインジケーターに挿入されました!
一難去ってまた一難
インジケータは名前を認識したくない
のスクリプトで、名前を書きました。
スクリプトが呼び出される場所。
あとは台本だけ
天下御免
お願いします
よろしくお願いします
パンザ
必要なら手伝うよ
何かあれば、お手伝いしますよ。
Vininさん、こんにちは。
どうもありがとうございました
助けたい!という気持ちから
の概要についてお送りします。
コンポスタースクリプトコール
パンサー
____________________________________
Pavlikさん、こんにちは。
一例をご紹介しますと
スクリプトコールがどのように構成されたか
コンポスターで、今は使えない。
検討中
パンサー
//+------------------------------------------------------------------+
//|sample_execute_scriptです。mq4|(エムキューブ
//+------------------------------------------------------------------+
#import "user32.dll"
int RegisterWindowMessageA(string MessageName)。
int PostMessageA(int hwnd, int msg, int wparam, string Name);
void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo)。
#インポート
int start()
{
int winHandle = WindowHandle( Symbol(),Period());
//
//
//
if( signal < 0 && trigl==true && buy == true ) {StartScript( winHandle, "SchliesenProfitOrders" ); } {スタート。
//
//
//
void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)
{
int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");
PostMessageA(hWnd, MessageNumber, 16, ScriptName)を実行します。
if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); }.
}
void ClearConfigDialog()
{
Sleep(100)です。
keybd_event(13, 0, 0, 0);
}
//
//
//
return(0)です。
Vininさん、こんにちは。
どうもありがとうございました
助けたい!という気持ちから
の概要についてお送りします。
コンポスタースクリプトコール
パンサー
____________________________________
Pavlikさん、こんにちは。
一例をご紹介しますと
スクリプトコールがどのように構成されたか
コンポスターで、今は使えない。
検討中
パンサー
SRCを クリックしてコードを貼り 付けるのは、本当に難しいのでしょうか!
これで問題なく使えるはずです。
また、スクリプトの頭文字の大文字小文字も忘れてはいけません。例えば、「test」というスクリプトが始まらない場合は、「Test」で試してみてください。
敬称略、Pavlik ))
これで問題なく使えるはずです。
また、スクリプトの頭文字の大文字小文字も忘れてはいけません。例えば、「test」というスクリプトが実行されない場合は、「Test」を試してみてください。
Regards, Pavlik )))
Pavlikさん、こんにちは。
リファインと
インジケータに全部入れてみた
が、インジケータはそれを望んでいない。
ようすをうかがう
を実現するために!
パンザ
//+------------------------------------------------------------------+
//|AltrEND_Signal。mq4|(エムキューブ
//| Copyright 2014, MetaQuotes Software Corp.
//|httpsを 使用しています。//wwwmql5.com|コメント||電子書籍ストア「BookLive!
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|AltrTrend_Signal_v2_2_alertです。mq4| (エムキューブ
//|ラムダス - 変換のみ| 電子書籍ストア「BookLive!
//+------------------------------------------------------------------+
#property copyright "著者 - OlegVS, GOODMAN"
#プロパティの厳密さ
#import "user32.dll"
int RegisterWindowMessageA(uchar &lParam[]);
int SendMessageA(int hWnd, int Msg, int wParam, char &lParam[]);
void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo)。
#インポート
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 DeepSkyBlue
#property indicator_color2 オレンジレッド
#property indicator_width1 1
#property indicator_width2 1
//---- 入力パラメータ
extern bool Alert_message=true;
extern int Time_alert_minutes=60; // ?・・・・・・・・・・???????????????????60 ?????.
extern int K = 30;
extern double Kstop = 0.5;
extern inttern Kperiod = 150;
extern int PeriodADX = 7; //14;
extern int CountBars = 100;
//---- バッファ
double val1[]。
double val2[]。
double AlertTime;
//+------------------------------------------------------------------+
//| カスタムインジケータ 初期化関数
//+------------------------------------------------------------------+
int init()
{
文字列のshort_name。
//---- インジケータ線
IndicatorBuffers(1)です。
SetIndexStyle(0,DRAW_ARROW)を設定します。
SetIndexArrow(0,241)。
IndicatorBuffers(2)です。
SetIndexStyle(1,DRAW_ARROW)を設定します。
SetIndexArrow(1,242)。
SetIndexBuffer(0,val1)を設定します。
SetIndexBuffer(1,val2)を設定します。
if(CountBars>=Bars)
CountBars=Bars。
SetIndexDrawBegin(0, Bars - CountBars + PeriodADX );
SetIndexDrawBegin(1, Bars - CountBars + PeriodADX );
//----
return(0)です。
}
//+------------------------------------------------------------------+
//| AltrTrend_Signal_v2_2|
//+------------------------------------------------------------------+
int start()
{
int i, shift, counted_bars = IndicatorCounted();
//----
if(counted_bars<0) return(-1);
//----
int i1, i2, t_per;
double Range、AvgRange、smin、smax、SsMax、SsMin、SSP、price。
bool uptrend, old;
//----
if(Bars <=PeriodADX+ 1)
return(0)です。
//----
for(shift = CountBars - PeriodADX ; shift >= 0; shift--)
{
SSP = MathCeil(Kperiod / iADX(NULL, 0, PeriodADX , PRICE_CLOSE, MODE_MAIN, 1));
レンジ=0。
AvgRange = 0;
for(i1 = shift; i1 <= shift + SSP; i1++)
{
AvgRange = AvgRange + MathAbs(High[i1] - Low[i1]);
}
Range = AvgRange / (SSP + 1)。
//----
SsMax = High[shift];
SsMin = Low[shift];
for(i2 = shift; i2 <= shift + SSP - 1; i2++)
{
price = High[i2];
if(SsMax < 価格)
SsMax= price;
価格 = Low[i2];
if(SsMin >= 価格)
SsMin = price;
}
//----
smin = SsMin + (SsMax - SsMin)*K / 100;
smax = SsMax - (SsMax - SsMin)*K / 100;
val1[shift]=0.0と する。
val2[shift]=0.0とする。
if(クローズ[シフト] < スミン)
{
uptrend = false とする。
}
if(クローズ[シフト] > smax)
{
uptrend = trueとする。
}
if(uptrend != old && uptrend == true)
{
val1[shift] = Low[shift] - Range*Kstop;
}
if(uptrend != old && uptrend == false)
{
val2[shift] = High[shift] + Range*Kstop;
}
old = アップトレンド。
}
void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)
{
{
char buf[];
StringToCharArray("MetaTrader4_Internal_Message",buf;)。
int MT4InternalMsg = RegisterWindowMessageA(buf);
StringToCharArray("fPlayer", buf);
SendMessageA(hWnd, MT4InternalMsg, 16, buf)を送信します。
if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); }.
}
void ClearConfigDialog()
{
Sleep(100)です。
keybd_event(13, 0, 0, 0);
}
//---- 警告
if (Period()<Time_alert_minutes) t_per=Period(); else t_per=Time_alert_minutes; // ?!!!?<Time_alert, ???????????????????????????????????????.????????????????????.
if (Alert_message==true && CurTime()>AlertTime && val1[0]!=0.0)
{
アラート(Symbol(), "+++ BUY !!!")+++", "//AltrTrend_Signal_v2_2_alert ");
AlertTime=CurTime() + (t_per - MathMod(TimeMinute(CurTime()), t_per))*60;
//PlaySound("payment.wav")を実行します。
fPlayer ;//スクリプト
}
if (Alert_message==true && CurTime()>AlertTime && val2[0]!=0.0)
{
アラート(Symbol(), "+++ SELL !!!!+++", "//AltrTrend_Signal_v2_2_alert");
AlertTime=CurTime() + (t_per - MathMod(TimeMinute(CurTime()), t_per))*60;
// PlaySound("payment.wav")を実行する。
fPlayer です。
}
return(0)です。
}
//+------------------------------------------------------------------+