You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
As a participant in this action, I agree to make the case public, I have nothing to hide.
So put it out.
Hello, I would like an EA or indicator and a script to create a Renko - chart in MT5.
I.e. it is possible to put indicators and scripts on the chart.
In MT4 it is implemented by several advisors, I personally use RenkoLiveChart_v3.2, I would like to have something similar for MT5.
Well, attached code of RenkoLiveChart_v3.2,
Here is the artist's response:
"I can start.
But I will do it within this week.
That's it, further rejection and fine.
so put it up.
Here is what the contractor wrote about the TOR (copied verbatim):
"Please attach the source code of the expert as ToR. (meaning RenkoLiveChart_v3.2)
amount 100 time 5."
All correspondence with the performer was only in the service, so that moderators saw it when deciding on the fine.
What to post? EA code for MT4? Here is the text of the announcement:
Hello, I would like an Expert Advisor or indicator and a script to create Renco-Chart in MT5.
I.e. it is possible to hang indicators and scripts on the chart.
In MT4 it is implemented by several advisors, I personally use RenkoLiveChart_v3.2, I would like to have something similar for MT5.
Well, attached code of RenkoLiveChart_v3.2,
Here is the artist's response:
"I can start.
But I will do it within this week.
That's it, further rejection and fine.
And here is the next phrase written that in general - it is real to do the job, but at a price of 4 times more.
Of course, in the discussions above there are phrases that perhaps the TOR have changed, or some other force majeure.
Here is a literal phrase of the performer (copied) why the work was not done: "it turns out to be unrealistic because of the architecture of MT5".
And the next phrase is written that in general - it is possible to do the job, but at a cost of 4 times higher.
And what do I have to do with it as a customer? Arbitrator Rosh still hasn't explained it to me.
Well, and to complete the picture, bring in a performer here.
To be honest, if I were him, I would have come myself a long time ago, given you $5, and slept peacefully.
But now that we've started, let's get on with it. Post the full text of the correspondence (including your assignment and his letter) with a chronology, and ask Rashid or Renat for comments.
komposter:
Well, and to complete the picture, bring in a performer here.
To be honest, if I were him, I would have come myself a long time ago, given you $5, and slept peacefully.
But now that we've started, let's get on with it. Post the full text of the correspondence (including your assignment and his letter) with chronology, and ask Rashid or Renat for comments.
As I wrote earlier, it's not in the amount (5feb.) And not even in the artist (well, not calculated their strength, it happens), and in the principle of collecting fines by moderators of the resource. The penalty is imposed not on the perpetrator, but on whomever is more convenient.
I can not invite the executor, if he does not come, so he thinks it better, it is his right.
Here is the text of the TOR:
TERMS OF REFERENCE
The task is to create an advisor that creates Renko-Chart in the Metatrader 5 trading terminal, similar in functionality to RenkoLiveChart_v3.2.mq4, used in the Metatrader 4 trading terminal.
RenkoLiveChart_v3.2.mq4 source code:
//+---------------------------------------------------------------------------+
//| EA VERSION
//| RenkoLiveChart_v3.2.mq4
//| Inspired from Renko script by "e4" (renko_live_scr.mq4)
//| Copyleft 2009 LastViking
//|
//| Aug 12 2009 (LV):
//| - Wanted volume in my Renko chart so I wrote my own script
//|
//| Aug 20-21 2009 (LV) (v1.1 - v1.3):
//| - First attempt at live Renko brick formation (bugs O bugs...)
//| - Fixed problem with strange symbol names at some 5 digit
//| brokers (credit to Tigertron)
//|
//| Aug 24 2009 (LV) (v1.4):
//| - Handle High / Low in history in a reasonable way (prev.
//| used Close)
//|
//| Aug 26 2009 (Lou G) (v1.5/v1.6):
//| - Finaly fixing the "late appearance" (live Renko brick
//| formation) bug
//|
//| Aug 31 2009 (LV) (v2.0):
//| - Not a script anylonger, but run as indicator
//| - Naroved down the MT4 bug that used to cause the "late appearance bug".
//| a little closer (has to do with High / Low gaps)
//| - Removed the while ... sleep() loop. Renko chart is now tick
//| driven: -MUSH nicer to system resources this way
//|
//| Sep 03 2009 (LV) (v2.1):
//| - Fixed so that Time[] holds the open time of the renko
//| bricks (prev. used time of close)
//|
//| Sep 16 2009 (Lou G) (v3.0):
//| - Optional wicks added
//| - Conversion back to EA
//| - Auto adjust for 5 and 6 dec brokers added
//| - enter RenkoBoxSize as "actual" size e.g. "10" for 10 pips
//| - Compensation for "zero compare" problem added
//|
//| Okt 05 2009 (LV) (v3.1):
//| - Fixed a bug related to BoxOffset
//| - Auto adjust for 3 and 4 dec JPY pairs
//| - Removed init() function
//| - Changed back to old style Renko brick formation
//|
//| Okt 13 2009 (LV) (v3.2):
//| - Added "EmulateOnLineChart" option (credit to Skipperxit/Mimmo)
//|
//+---------------------------------------------------------------------------+
#property copyright ""
//+------------------------------------------------------------------+
#include <WinUser32.mqh>
#include <stdlib.mqh>
//+------------------------------------------------------------------+
#import "user32.dll"
int RegisterWindowMessageA(string lpString);
#import
//+------------------------------------------------------------------+
extern int RenkoBoxSize = 10;
extern intern RenkoBoxOffset = 0;
extern inttern RenkoTimeFrame = 2; // What time frame to use for the offline renko chart
extern bool ShowWicks = true;
extern bool EmulateOnLineChart = true;
extern bool StrangeSymbolName = false;
//+------------------------------------------------------------------+
int HstHandle = -1, LastFPos = 0, MT4InternalMsg = 0;
string SymbolName;
//+------------------------------------------------------------------+
void UpdateChartWindow() {
static 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);
return;
}
//+------------------------------------------------------------------+
int start() {
static double BoxPoints, UpWick, DnWick;
static double PrevLow, PrevHigh, PrevOpen, PrevClose, CurVolume, CurLow, CurHigh, CurOpen, CurClose;
static datetime PrevTime;
//+------------------------------------------------------------------+
// This is only executed ones, then the first tick arives.
if(HstHandle < 0) {
// Init
// Error checking
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 then RenkoBoxSize!");
return(-1);
}
switch(RenkoTimeFrame) {
case 1: case 5: case 15: case 30: case 60: case 240:
case 1440: case 10080: case 43200: case 0:
Print("Error: Invald time frame used for offline renko chart (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];
// create / open hst file
HstHandle = FileOpenHistory(SymbolName + RenkoTimeFrame + ".hst", FILE_BIN|FILE_WRITE);
if(HstHandle < 0) {
Print("Error: can\'t create / open history file: " + ErrorDescription(GetLastError()) + ": " + SymbolName + RenkoTimeFrame + ".hst");
return(-1);
}
//
// write hst file header
int HstUnused[13];
FileWriteInteger(HstHandle, 400, LONG_VALUE); // Version
FileWriteString(HstHandle, "", 64); // FileWriteString(HstHandle, "", 64); // Version
FileWriteString(HstHandle, SymbolName, 12); // Symbol
FileWriteInteger(HstHandle, RenkoTimeFrame, LONG_VALUE); // Period
FileWriteInteger(HstHandle, Digits, LONG_VALUE); // Digits
FileWriteInteger(HstHandle, 0, LONG_VALUE); // Time Sign
FileWriteInteger(HstHandle, 0, LONG_VALUE); // Last Sync
FileWriteArray(HstHandle, HstUnused, 0, 13); // Unused
//
// process historical data
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]);
// update low before high or the reversal depending on whether it is closest to prev. bar
bool UpTrend = High[i]+Low[i] > High[i+1]+Low[i+1];
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);
UpWick = 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);
UpWick = 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);
UpWick = 0;
DnWick = EMPTY_VALUE;
CurVolume = 0;
CurHigh = PrevLow;
CurLow = PrevLow;
if(PrevTime < Time[i]) PrevTime = Time[i];
else PrevTime++;
}
i--;
}
LastFPos = FileTell(HstHandle); // Remember Last pos in file
//
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); // Time
FileWriteDouble(HstHandle, CurOpen, DOUBLE_VALUE); // Open
FileWriteDouble(HstHandle, CurLow, DOUBLE_VALUE); // Low
FileWriteDouble(HstHandle, CurHigh, DOUBLE_VALUE); // High
FileWriteDouble(HstHandle, CurClose, DOUBLE_VALUE); // Close
FileWriteDouble(HstHandle, CurVolume, DOUBLE_VALUE); // Volume
FileFlush(HstHandle);
UpdateChartWindow();
return(0);
// End historical data / Init
}
//----------------------------------------------------------------------------
// HstHandle not < 0 so we always enter here after history done
// Begin live data feed
UpWick = MathMax(UpWick, Bid);
DnWick = MathMin(DnWick, Bid);
CurVolume++;
FileSeek(HstHandle, LastFPos, SEEK_SET);
//-------------------------------------------------------------------------
// up box
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); // Remeber Last pos in file
if(PrevTime < TimeCurrent()) PrevTime = TimeCurrent();
else PrevTime++;
CurVolume = 0;
CurHigh = PrevHigh;
CurLow = PrevHigh;
UpWick = 0;
DnWick = EMPTY_VALUE;
UpdateChartWindow();
}
//-------------------------------------------------------------------------
// down box
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); // Remeber Last pos in file
if(PrevTime < TimeCurrent()) PrevTime = TimeCurrent();
else PrevTime++;
CurVolume = 0;
CurHigh = PrevLow;
CurLow = PrevLow;
UpWick = 0;
DnWick = EMPTY_VALUE;
UpdateChartWindow();
}
//-------------------------------------------------------------------------
// no box - high/low not hit
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); // Time
FileWriteDouble(HstHandle, CurOpen, DOUBLE_VALUE); // Open
FileWriteDouble(HstHandle, CurLow, DOUBLE_VALUE); // Low
FileWriteDouble(HstHandle, CurHigh, DOUBLE_VALUE); // High
FileWriteDouble(HstHandle, CurClose, DOUBLE_VALUE); // Close
FileWriteDouble(HstHandle, CurVolume, DOUBLE_VALUE); // Volume
FileFlush(HstHandle);
UpdateChartWindow();
}
return(0);
}
//+------------------------------------------------------------------+
int deinit() {
if(HstHandle >= 0) {
FileClose(HstHandle);
HstHandle = -1;
}
Comment(");
return(0);
}
//+------------------------------------------------------------------+
Here is the EXECUTIVE's RESPONSE:
15794
Im_hungry 2013.11.25 17:25 #
I can start.
But will do within this week.
Next
Im_hungry 2013.11.26 07:59 #
I will just rewrite it. i will send you the source and other stuff.
I will send it to you.
Next:
Im_hungry 2013.11.26 08:33 #
I will be able to start working on it tomorrow.
Will only be able to start tomorrow. Will do by the end of the week
2013.11.26 10:25
Developer Im_hungry has confirmed the step "Agreement to work"
Well, and to complete the picture, bring in a performer here.
To be honest, if I were him, I would have come myself a long time ago, given you $5, and slept peacefully.
But now that we've started, let's get on with it. Post the full text of correspondence (including your task and his letter) with a chronology, and ask Rashid or Renat for comments.
Here's the answer, lines have appeared, I can't remove it, I'm writing the next post.
Next
Next is your turn.
As a ToR, attach source code of expert.
amount 100 time 5.
To proceed to the next step and start work you must have the specified amount in your account (Profile - Payments - top up)
All rules here : https://www.mql5.com/ru/job/rules
ok.
Funds will be frozen until you confirm the "Payment" step
After verification and receipt of the source code. If anything, there is an arbitration
to which you will be able to make a claim for a refund.
2013.11.27 12:20 Customer kylinar2012 has confirmed the step "Agreement of TOR". The final cost of the work is set at 100.00 credits.
Customer attached Terms of Reference
Developer Im_hungry confirmed the step "Agree ToR". 100.00 credits frozen on account of the client(kylinar2012)
2013.12.01 09:38
"Please close the request in favour of the customer.TOR cannot be implemented due to MT5 architecture.Thank you"
2013.12.02 11:28
As a result of the arbitration, the job was cancelled by Rosh administrator. The frozen funds of 95.00 credits were returned to the client. The performer was moved to "Rejected".
That's it, then an email to me:
Respectfully, Alex.
What's my fault? What's the penalty? I ask for comments from Rashid or Renat.
I would also add that such an EA is implemented here:
https://www.mql5.com/ru/market/product/714#full_description
Only it's a bit off for me as it uses specific indicators (unfortunately).
If I could have put my own, I would not have bothered with this development, but bought it there.
What am I guilty of? What am I fined for? I ask for comments from Rashid or Renat.
No correspondence with other applicants?
I'm on your side. Rashid's comment will be very interesting.