// エラーチェック if(!IsConnected()){ Print("Waiting for connection..."); return(0)です。 } if(!IsDllsAllowed()){ Print("Error: Dll calls must be allowed!"); return(-1)です。 } if(MathAbs(RenkoBoxOffset) >= RenkoBoxSize) {. Print("Error: |RenkoBoxOffset| must be less than RenkoBoxSize!"); return(-1)です。 } switch(RenkoTimeFrame){。 ケース1:ケース5:ケース15:ケース30:ケース60:ケース240。 case 1440: case 10080: case 43200: case 0: Print("エラー: オフラインの renko チャート (RenkoTimeFrame) に使用されたタイムフレームが無効です!"); return(-1)です。 } //
Индикатор iRenkoChart предназначен для создания пользовательских графиков Renko. Используется открытый формат файлов истории, легкое переключение между графиками на основе Bid и Ask котировок, контроль качества истории, возможность использования...
このアクションの参加者として、私は本件を公表することに同意します、隠すことは何もありません。
だから出すんです。
こんにちは、MT5でRenko - チャートを作成するEAまたはインジケータとスクリプトが欲しいのです。
すなわち、チャート上にインジケーターやスクリプトをぶら下げることが可能です。
MT4ではいくつかのアドバイザーで実装されており、個人的にはRenkoLiveChart_v3.2を使っていますが、MT5でも同じようなものが欲しいと思っています。
さて、RenkoLiveChart_v3.2のコードを添付します。
以下は、アーティストの回答です。
"始める "ことができる。
でも、今週中にやりますよ。
以上、さらに拒絶反応とペナルティ。
ということで、貼ってください。
以下は、契約者がTORについて書いたものである(そのままコピー)。
"ToR "として、エキスパートのソースコードを添付してください。(RenkoLiveChart_v3.2の意味)
量 100 時間 5."
出演者とのやりとりはすべてサービス内だけで、司会者が罰金を決めるときに目にするようになっていた。
何を掲載するか?MT4用EAコード?以下は、その発表文です。
こんにちは、MT5でRenco-Chartを作成するExpert AdvisorまたはIndicatorとスクリプトが欲しいのですが、どうすればいいですか?
すなわち、チャート上にインジケーターやスクリプトをぶら下げることが可能です。
MT4ではいくつかのアドバイザーで実装されており、個人的にはRenkoLiveChart_v3.2を使っていますが、MT5でも同じようなものが欲しいと思っています。
さて、RenkoLiveChart_v3.2のコードを添付します。
以下は、アーティストの回答です。
"始める "ことができる。
でも、今週中にやりますよ。
以上、さらに拒絶して結構です。
そして、次のフレーズは、一般的に - それは仕事をするのが本当ですが、4倍以上の価格で書かれています。
もちろん、上記の議論では、TORが変更されたとか、何らかの不可抗力があったという表現もあります。
ここで、作業が行われなかった理由を演奏者(コピー)の文字通りのフレーズで説明すると、 「MT5のアーキテクチャ上、非現実的なものになることが判明した」 です。
そして、次のフレーズは、一般的に-仕事をすることは可能だが、4倍のコストがかかると書かれています。
そして、お客さまである私はどうすればいいのか?アービトレーターの ロッシュはまだ説明して いない。
さて、そして絵を完成させるために、ここにパフォーマーを連れてきてください。
正直なところ、もし私が彼だったら、ずっと前に自分で来て、5ドルを渡して、安らかに眠ったことでしょう。
でも、せっかく始めたのだから、さっそくやってみましょう。通信の全文(あなたの課題、彼の手紙を含む)を年表とともに掲載し、RashidかRenatにコメントを求めてみてください。
komposter:
さて、そして絵を完成させるために、ここにパフォーマーを連れてきてください。
正直なところ、もし私が彼だったら、ずっと前に自分で来て、5ドルを渡して、安らかに眠ったことでしょう。
でも、せっかく始めたのだから、さっそくやってみましょう。通信の全文(あなたの課題、彼の手紙を含む)を時系列で掲載し、RashidかRenatにコメントを求める。
先ほども書きましたが、金額(5セント)でもなく、アーティスト(まあ、その強さは計算外ですが)でもなく、リソースモデレーターによる罰金賦課の原則にあります。罰は加害者ではなく、より都合の良い人に課されるのです。
私は、彼が来ない場合、執行者を招待することはできませんので、彼はそれが良いと思う、それは彼の権利である。
以下は、TORの本文です。
諮問事項
課題は、メタトレーダー4の取引端末で使用されているRenkoLiveChart_v3.2.mq4と同様の機能で、メタトレーダー5の取引端末でRenko - チャートを作成するアドバイザーを作成することです。
RenkoLiveChart_v3.2.mq4ソースコードです。
//+---------------------------------------------------------------------------+
//| EA VERSION
//| RenkoLiveChart_v3.2.mq4
//| "e4 "のRenkoスクリプト(renko_live_scr.mq4)から着想を得ています。
//| コピーレフト 2009 LastViking
//|
//| 2009年8月12日(LV)。
//| - Renkoチャートにボリュームが欲しかったので、自分でスクリプトを書きました。
//|
//| 2009年8月20日~21日(LV) (v1.1 - v1.3):
//| - Renkoのレンガのライブフォーメーションに初挑戦(バグOバグ...)。
//| - 一部の5桁の数字でシンボル名がおかしくなる問題を修正しました。
//| ブローカー(クレジット:Tigertron)
//|
//| 2009年8月24日(LV)(v1.4)。
//| - 履歴の高値/安値を合理的に処理する(prev.
///使用済み 閉じる)
//|
//| 2009年8月26日(Lou G)(v1.5/v1.6)。
//| - 最終的に「遅刻」を修正する (ライブレンコブリック)
//形成)バグ
//|
//| 2009年8月31日(LV)(v2.0)。
//| - もはやスクリプトではなく、インジケータとして実行されます。
//| - MT4のバグである "出現遅延バグ "を解消しました。
//| もう少し近づく(High/Lowのギャップに関係する)。
//| - whileを削除しました.sleep()ループ。Renkoチャートは現在ティック
//| この方がシステムリソースに優しい。
//|
//| 2009年9月3日(LV)(v2.1)。
//| - Time[]がrenkoのオープンタイムを保持するように修正
//| レンガ (以前のクローズ時のもの)
//|
//| 2009年9月16日(Lou G)(v3.0)。
//| オプションで芯を追加
//| - EAに変換して戻す
//| - 5、6デッキの自動調整機能追加
//| - RenkoBoxSize を "実際の" サイズとして入力します 例."10 "で10ピップス
//| ゼロコンペア問題の補正を追加
//|
//| Okt 05 2009 (LV) (v3.1):
//| - BoxOffsetに関連するバグを修正しました。
//| - 3デシベルおよび4デシベルの円ペアの自動調整
//| - init()関数を削除しました。
//| - 古いスタイルのRenkoブリックフォーメーションに戻しました。
//|
//| Okt 13 2009 (LV) (v3.2):
//| EmulateOnLineChart" オプションを追加(Skipperxit/Mimmo氏の功績)。
//|
//+---------------------------------------------------------------------------+
#property copyright ""
//+------------------------------------------------------------------+
#include <WinUser32.mqh>.
#include <stdlib.mqh>.
//+------------------------------------------------------------------+
#import "user32.dll"
int RegisterWindowMessageA(string lpString)。
#インポート
//+------------------------------------------------------------------+
extern int RenkoBoxSize = 10;
extern intern RenkoBoxOffset = 0;
extern inttern RenkoTimeFrame = 2; // オフラインの renko チャートに使用するタイムフレームを指定します。
extern bool ShowWicks = true;
extern bool EmulateOnLineChart = true;
extern bool StrangeSymbolName = false;
//+------------------------------------------------------------------+
int HstHandle = -1, LastFPos = 0, MT4InternalMsg = 0;
文字列 SymbolName;
//+------------------------------------------------------------------+
void UpdateChartWindow() {...
静的 int hwnd = 0;
if(hwnd == 0) {
hwnd = WindowHandle(SymbolName, RenkoTimeFrame);
if(hwnd != 0) Print("Chart window detected");
}
if(EmulateOnLineChart && MT4InternalMsg == 0)
MT4InternalMsg = RegisterWindowMessageA("MetaTrader4_Internal_Message");
if(hwnd != 0) if(PostMessageA(hwnd, WM_COMMAND, 0x822c, 0) == 0) hwnd = 0;
if(hwnd != 0 && MT4InternalMsg != 0) PostMessageA(hwnd, MT4InternalMsg, 2, 1)を実行。
を返します。
}
//+------------------------------------------------------------------+
int start() {
静的ダブルBoxPoints、UpWick、DnWick。
静的ダブル PrevLow, PrevHigh, PrevOpen, PrevClose, CurVolume, CurLow, CurHigh, CurOpen, CurClose。
static datetime PrevTime。
//+------------------------------------------------------------------+
// これは1つだけ実行され、その後最初のティックが到来する。
if(HstHandle < 0) {
// 初期化
// エラーチェック
if(!IsConnected()){
Print("Waiting for connection...");
return(0)です。
}
if(!IsDllsAllowed()){
Print("Error: Dll calls must be allowed!");
return(-1)です。
}
if(MathAbs(RenkoBoxOffset) >= RenkoBoxSize) {.
Print("Error: |RenkoBoxOffset| must be less than RenkoBoxSize!");
return(-1)です。
}
switch(RenkoTimeFrame){。
ケース1:ケース5:ケース15:ケース30:ケース60:ケース240。
case 1440: case 10080: case 43200: case 0:
Print("エラー: オフラインの renko チャート (RenkoTimeFrame) に使用されたタイムフレームが無効です!");
return(-1)です。
}
//
int BoxSize = RenkoBoxSize;
int BoxOffset = RenkoBoxOffset;
if(Digits == 5 || (Digits == 3 && StringFind(Symbol(), "JPY") != -1))){
BoxSize = BoxSize*10;
BoxOffset = BoxOffset*10;
}
if(Digits == 6 || (Digits == 4 && StringFind(Symbol(), "JPY") != -1))){
BoxSize = BoxSize*100;
BoxOffset = BoxOffset*100;
}
if(StrangeSymbolName) SymbolName = StringSubstr(Symbol(), 0, 6);
else SymbolName = Symbol();
BoxPoints = NormalizeDouble(BoxSize*Point, Digits)です。
PrevLow = NormalizeDouble(BoxOffset*Point + MathFloor(Close[Bars-1]/BoxPoints)*BoxPoints, Digits)です。
DnWick = PrevLow;
PrevHigh = PrevLow + BoxPoints;
PrevWick = PrevHigh。
PrevOpen = PrevLow;
PrevClose = PrevHigh;
CurVolume = 1;
PrevTime = Time[Bars-1];
// hstファイルを作成/開く
HstHandle = FileOpenHistory(SymbolName + RenkoTimeFrame + ".hst", FILE_BIN|FILE_WRITE)です。
if(HstHandle < 0) {
Print("エラー: Can't create / open history file: " + ErrorDescription(GetLastError()) + ": " + SymbolName + RenkoTimeFrame + ".hst").Error: Can't create / open history file: " + ErrorDescription(GetLastError()) + ": " + SymbolName + RenkoTimeFrame ";
return(-1)です。
}
//
// hstファイルのヘッダを書き込む
int HstUnused[13];
FileWriteInteger(HstHandle, 400, LONG_VALUE); // バージョン
FileWriteString(HstHandle, "", 64); // FileWriteString(HstHandle, "", 64); // Version
FileWriteString(HstHandle, SymbolName, 12); // Symbol
FileWriteInteger(HstHandle, RenkoTimeFrame, LONG_VALUE); // ピリオド
FileWriteInteger(HstHandle, Digits, LONG_VALUE); // Digits
FileWriteInteger(HstHandle, 0, LONG_VALUE); // 時刻表示
FileWriteInteger(HstHandle, 0, LONG_VALUE); // 最後に同期をとる。
FileWriteArray(HstHandle, HstUnused, 0, 13); // 未使用
//
// ヒストリカルデータを処理する
int i = Bars-2;
//Print(Symbol() + " + High[i] + " + Low[i] + " + Open[i] + " + Close[i])を実行。
//---------------------------------------------------------------------------
while(i >= 0) {
CurVolume = CurVolume + Volume[i];
UpWick = MathMax(UpWick, High[i]);
DnWick = MathMin(DnWick, Low[i]);
// 高値の前に安値を更新するか、前のバーに最も近いかどうかに応じて反転する。
bool UpTrend = High[i]+Low[i] > High[i+1]+Low[i+1];
while(UpTrend && (安値[i] < PrevLow-BoxPoints || CompareDoubles(Low[i], PrevLow-BoxPoints)){
PrevHigh = PrevHigh - BoxPoints;
PrevLow = PrevLow - BoxPoints;
PrevOpen = PrevHigh;
PrevClose = PrevLow;
FileWriteInteger(HstHandle, PrevTime, LONG_VALUE)を使用します。
FileWriteDouble(HstHandle, PrevOpen, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevLow, DOUBLE_VALUE);
if(ShowWicks && UpWick > PrevHigh) FileWriteDouble(HstHandle, UpWick, DOUBLE_VALUE);
else FileWriteDouble(HstHandle, PrevHigh, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevClose, DOUBLE_VALUE);
FileWriteDouble(HstHandle, CurVolume, DOUBLE_VALUE);
アップウィック=0。
DnWick = EMPTY_VALUE;
CurVolume = 0;
CurHigh = PrevLow;
CurLow = PrevLow;
if(PrevTime < Time[i]) PrevTime = Time[i];
else PrevTime++;
}
while(High[i] > PrevHigh+BoxPoints || CompareDoubles(High[i], PrevHigh+BoxPoints)){
PrevHigh = PrevHigh + BoxPoints;
PrevLow = PrevLow + BoxPoints;
PrevOpen = PrevLow;
PrevClose = PrevHigh;
FileWriteInteger(HstHandle, PrevTime, LONG_VALUE)を使用します。
FileWriteDouble(HstHandle, PrevOpen, DOUBLE_VALUE);
if(ShowWicks && DnWick < PrevLow) FileWriteDouble(HstHandle, DnWick, DOUBLE_VALUE);
else FileWriteDouble(HstHandle, PrevLow, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevHigh, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevClose, DOUBLE_VALUE);
FileWriteDouble(HstHandle, CurVolume, DOUBLE_VALUE);
アップウィック=0。
DnWick = EMPTY_VALUE;
CurVolume = 0;
CurHigh = PrevHigh;
CurLow = PrevHigh;
if(PrevTime < Time[i]) PrevTime = Time[i];
else PrevTime++;
}
while(!UpTrend && (Low[i] < PrevLow-BoxPoints || CompareDoubles(Low[i], PrevLow-BoxPoints)){
PrevHigh = PrevHigh - BoxPoints;
PrevLow = PrevLow - BoxPoints;
PrevOpen = PrevHigh;
PrevClose = PrevLow;
FileWriteInteger(HstHandle, PrevTime, LONG_VALUE)を使用します。
FileWriteDouble(HstHandle, PrevOpen, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevLow, DOUBLE_VALUE);
if(ShowWicks && UpWick > PrevHigh) FileWriteDouble(HstHandle, UpWick, DOUBLE_VALUE);
else FileWriteDouble(HstHandle, PrevHigh, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevClose, DOUBLE_VALUE);
FileWriteDouble(HstHandle, CurVolume, DOUBLE_VALUE);
アップウィック=0。
DnWick = EMPTY_VALUE;
CurVolume = 0;
CurHigh = PrevLow;
CurLow = PrevLow;
if(PrevTime < Time[i]) PrevTime = Time[i];
else PrevTime++;
}
i--;
}
LastFPos = FileTell(HstHandle); // ファイル内の最後の位置を記憶する
//
Comment("RenkoLiveChart(" + RenkoBoxSize + "): Open Offline ", SymbolName, ",M", RenkoTimeFrame, " to view chart");
if(Close[0]>MathMax(PrevClose、PrevOpen))CurOpen = MathMax(PrevClose, PrevOpen)。
else if (Close[0](クローズ)<MathMin(PrevClose, PrevOpen))CurOpen = MathMin(PrevClose, PrevOpen)。
else CurOpen = Close[0];
CurClose = Close[0];
if(UpWick > PrevHigh) CurHigh = UpWick;
if(DnWick < PrevLow) CurLow = DnWick;
FileWriteInteger(HstHandle, PrevTime, LONG_VALUE); // 時間
FileWriteDouble(HstHandle, CurOpen, DOUBLE_VALUE); // 開く
FileWriteDouble(HstHandle, CurLow, DOUBLE_VALUE); // Low
FileWriteDouble(HstHandle, CurHigh, DOUBLE_VALUE); // High
FileWriteDouble(HstHandle, CurClose, DOUBLE_VALUE); // Close
FileWriteDouble(HstHandle, CurVolume, DOUBLE_VALUE); // ボリューム
FileFlush(HstHandle)。
UpdateChartWindow()を実行。
return(0)です。
// ヒストリカルデータ終了 / 初期化
}
//----------------------------------------------------------------------------
// HstHandle < 0 ではないので、ヒストリが終了したら常にここに入力する。
// ライブデータ配信開始
UpWick = MathMax(UpWick, Bid);
DnWick = MathMin(DnWick, Bid);
CurVolume++です。
FileSeek(HstHandle, LastFPos, SEEK_SET);
//-------------------------------------------------------------------------
// アップボックス
if(Bid > PrevHigh+BoxPoints || CompareDoubles(Bid, PrevHigh+BoxPoints)){
PrevHigh = PrevHigh + BoxPoints;
PrevLow = PrevLow + BoxPoints;
PrevOpen = PrevLow;
PrevClose = PrevHigh;
FileWriteInteger(HstHandle, PrevTime, LONG_VALUE)を使用します。
FileWriteDouble(HstHandle, PrevOpen, DOUBLE_VALUE);
if (ShowWicks && DnWick < PrevLow) FileWriteDouble(HstHandle, DnWick, DOUBLE_VALUE);
else FileWriteDouble(HstHandle, PrevLow, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevHigh, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevClose, DOUBLE_VALUE);
FileWriteDouble(HstHandle, CurVolume, DOUBLE_VALUE);
FileFlush(HstHandle)。
LastFPos = FileTell(HstHandle); // ファイル内の最後の位置を記憶する
if(PrevTime < TimeCurrent())PrevTime = TimeCurrent();
else PrevTime++;
CurVolume = 0;
CurHigh = PrevHigh;
CurLow = PrevHigh;
アップウィック=0。
DnWick = EMPTY_VALUE;
UpdateChartWindow()を実行。
}
//-------------------------------------------------------------------------
// ダウンボックス
else if(Bid < PrevLow-BoxPoints || CompareDoubles(Bid,PrevLow-BoxPoints)){
PrevHigh = PrevHigh - BoxPoints;
PrevLow = PrevLow - BoxPoints;
PrevOpen = PrevHigh;
PrevClose = PrevLow;
FileWriteInteger(HstHandle, PrevTime, LONG_VALUE)を使用します。
FileWriteDouble(HstHandle, PrevOpen, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevLow, DOUBLE_VALUE);
if(ShowWicks && UpWick > PrevHigh) FileWriteDouble(HstHandle, UpWick, DOUBLE_VALUE);
else FileWriteDouble(HstHandle, PrevHigh, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevClose, DOUBLE_VALUE);
FileWriteDouble(HstHandle, CurVolume, DOUBLE_VALUE);
FileFlush(HstHandle)。
LastFPos = FileTell(HstHandle); // ファイル内の最後の位置を記憶する
if(PrevTime < TimeCurrent())PrevTime = TimeCurrent();
else PrevTime++;
CurVolume = 0;
CurHigh = PrevLow;
CurLow = PrevLow;
アップウィック=0。
DnWick = EMPTY_VALUE;
UpdateChartWindow()を実行。
}
//-------------------------------------------------------------------------
// 箱なし - ハイ/ローがヒットしない
else {
if(Bid > CurHigh) CurHigh = Bid;
if(Bid < CurLow) CurLow = Bid;
if(PrevHigh <= Bid) CurOpen = PrevHigh;
else if(PrevLow >= Bid) CurOpen = PrevLow;
else CurOpen = Bid;
CurClose = Bid;
FileWriteInteger(HstHandle, PrevTime, LONG_VALUE); // 時間
FileWriteDouble(HstHandle, CurOpen, DOUBLE_VALUE); // 開く
FileWriteDouble(HstHandle, CurLow, DOUBLE_VALUE); // Low
FileWriteDouble(HstHandle, CurHigh, DOUBLE_VALUE); // High
FileWriteDouble(HstHandle, CurClose, DOUBLE_VALUE); // Close
FileWriteDouble(HstHandle, CurVolume, DOUBLE_VALUE); // ボリューム
FileFlush(HstHandle)。
UpdateChartWindow()を実行。
}
return(0)です。
}
//+------------------------------------------------------------------+
int deinit() {
if(HstHandle >= 0) {
FileClose(HstHandle)。
HstHandle = -1;
}
Comment(")です。
return(0)です。
}
//+------------------------------------------------------------------+
EXECUTIVEのRESPONSEはこちらです。
15794
Im_hungry 2013.11.25 17:25 #.
始めることができます。
しかし、今週中に行う予定です。
次のページ
Im_hungry 2013.11.26 07:59 #.
書き換えるだけです。ソースなど送ります。
お送りします。
次のページ
Im_hungry 2013.11.26 08:33 #.
明日から頑張れそうです。
明日からしかできない。週明けには対応予定
2013.11.26 10:25
開発者のIm_hungry 氏は、ステップの "Agree to work "を確認しました。
さて、そして絵を完成させるために、ここにパフォーマーを連れてきてください。
正直なところ、もし私が彼だったら、ずっと前に自分で来て、5ドルを渡して、安らかに眠ったことでしょう。
でも、せっかく始めたのだから、さっそくやってみましょう。通信の全文(あなたのタスクと彼の手紙を含む)を年表とともに掲載し、RashidかRenatにコメントを求めます。
これが答えです、線が出てしまいました、削除できません、次の記事を書いています。
次のページ
次はあなたの番です。
ToRとして、エキスパートのソースコードを添付してください。
量 100 回 5.
次のステップに進み、作業を開始するには、アカウントに指定された金額がある必要があります(プロフィール - 支払い - トップアップ)。
すべてのルールはこちら :https://www.mql5.com/ru/job/rules
OK
支払い "ステップを確認するまで、資金は凍結されます
ソースコードの確認・受領後。どちらかというと、仲裁がある
に対して、払い戻しの請求を行うことができます。
2013.11.27 12:20 お客様kylinar2012 様が「TORの合意」ステップを確認されました。最終的な作品コストは100.00クレジットに設定されています。
お客様との取引条件
開発者のIm_hungry 氏は、「Agree ToR」のステップを確認しました。100.00 クライアント(kylinar2012)のアカウントでクレジットが凍結されました。
2013.12.01 09:38
"MT5のアーキテクチャのため、TORを実装できません。
2013.12.02 11:28
仲裁の結果、この仕事はロッシュ 管理者によってキャンセルされた。凍結された資金95.00クレジットは、クライアントに返却されました。出演者は「却下」に移動しました。
それが、私へのメール。
敬称略、アレックス
私の何が悪いんだ?ペナルティは?ラシードやレナトにコメントを求める。
また、そのようなEAがここに実装されていることも付け加えておきます。
https://www.mql5.com/ru/market/product/714#full_description
ただ、特定の指標を使うので、私には少しずれています(残念)。
自分のを入れられるなら、わざわざこの開発ではなく、そちらで買っていたかもしれません。
私は何を犯しているのだろう?何のために罰金を取られるのですか?ラシードやレナトにコメントを求める。
他の応募者とのやり取りはないのか?
私はあなたの味方です。Rashidのコメントは非常に興味深い。