Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я как участник этого действа согласен чтоб сделать случай публичным, мне скрывать не чего.
так выкладывйте
Здравствуйте, хотелось бы советник или индикатор и скрипт для создания Ренко - чарта в МТ5.
Т.е. чтоб на чарте можно было повесить индикаторы, скрипты.
В МТ4 это реализовано несколькими советниками, лично я пользуюсь RenkoLiveChart_v3.2, хотелось бы аналогичное что - то для МТ5.
Ну и приложен код советника RenkoLiveChart_v3.2,
Вот ответ исполнителя:
"Могу начать.
Но сделаю в течении этой недели."
Вот и все, дальше отказ и штраф.
так выкладывйте
Вот что написал исполнитель насчет ТЗ (скопировано дословно):
"В качестве ТЗ приложите исходник эксперта. (имелся ввиду RenkoLiveChart_v3.2)
сумма 100 время 5."
Вся переписка с исполнителем велась только в сервисе, так что модераторы это видели вынося решение о штрафе.
Что выложить? Код советника для МТ4? Вот текст объявления:
Здравствуйте, хотелось бы советник или индикатор и скрипт для создания Ренко - чарта в МТ5.
Т.е. чтоб на чарте можно было повесить индикаторы, скрипты.
В МТ4 это реализовано несколькими советниками, лично я пользуюсь RenkoLiveChart_v3.2, хотелось бы аналогичное что - то для МТ5.
Ну и приложен код советника RenkoLiveChart_v3.2,
Вот ответ исполнителя:
"Могу начать.
Но сделаю в течении этой недели."
Вот и все, дальше отказ и штраф.
А вот следующей фразе написано, что вообще - то реально сделать работу, но по цене в 4 раза большей.
Конечно в обсуждениях выше приводятся фразы что возможно ТЗ изменилось или еще какие форс - мажоры.
Вот дословная фраза исполнителя (скопированная) почему работа не была сделана: "оказывается нереально будет сделать в силу архитектуры МТ5"
А вот следующей фразе написано, что вообще - то реально сделать работу, но по цене в 4 раза большей.
И при чем здесь я, как заказчик? Арбитражер Rosh мне так и не пояснил.
Ну, и для полноты картины пригласите сюда исполнителя.
Я, если честно, на его месте давно пришел бы сам, дал вам $5, и спал спокойно.
Но раз начали, давайте закончим. Опубликуйте полный текст переписки (включая ваше задание и его письмо) с хронологией, и попросим комментариев Рашида или Рената.
komposter:
Ну, и для полноты картины пригласите сюда исполнителя.
Я, если честно, на его месте давно пришел бы сам, дал вам $5, и спал спокойно.
Но раз начали, давайте закончим. Опубликуйте полный текст переписки (включая ваше задание и его письмо) с хронологией, и попросим комментариев Рашида или Рената.
Как я писал ранее, дело не в сумме (5ед.) и даже не в исполнителе (ну не рассчитал человек свои силы, бывает), а в принципе взыскания штрафов модераторами ресурса. Штраф берется не с виновного, а с кого удобнее.
Я не могу пригласить исполнителя, раз он не приходит, значит так считает лучше, это его право.
Вот текст ТЗ:
ТЕХНИЧЕСКОЕ ЗАДАНИЕ
Заданием является изготовление советника, создающего Ренко – чарт в торговом терминале Метатрейдер 5, аналогичный, по функциональным возможностям, советнику RenkoLiveChart_v3.2.mq4, используемому в торговом терминале Метатрейдер 4.
Исходный код RenkoLiveChart_v3.2.mq4:
//+---------------------------------------------------------------------------+
//| 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 int RenkoBoxOffset = 0;
extern int 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| should 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;
UpWick = 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); // Copyright
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 revers depending on 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);
}
//+------------------------------------------------------------------+
Вот ОТВЕТ ИСПОЛНИТЕЛЯ:
15794
Im_hungry 2013.11.25 17:25 #
Могу начать.
Но сделаю в течении этой недели.
Следующее
Im_hungry 2013.11.26 07:59 #
я только перепешу. исходник и прочее вышлю вам.
А насчет прав это уже к автору кода на МТ4.
Следующее:
Im_hungry 2013.11.26 08:33 #
тогда переводите меня в выбранные и начнем оформление.
Приступить смогу только завтра. Сделаю к концу недели
2013.11.26 10:25
Разработчик Im_hungry подтвердил шаг "Соглашение о работе"
Ну, и для полноты картины пригласите сюда исполнителя.
Я, если честно, на его месте давно пришел бы сам, дал вам $5, и спал спокойно.
Но раз начали, давайте закончим. Опубликуйте полный текст переписки (включая ваше задание и его письмо) с хронологией, и попросим комментариев Рашида или Рената.
Вот вроде ответил, появились линии, убрать не могу, пишу далее следующий пост.
Дальше
Дальше ваша очередь.
В качестве ТЗ приложите исходник эксперта.
сумма 100 время 5.
Для перехода к следующему этапу и началу работы у вас на счету должна быть указанная сумма (профиль - Расчеты - пополнить)
Все правила здесь : https://www.mql5.com/ru/job/rules
ок.
Средства будут заморожены до вашего подтверждения этапа "Оплата"
после проверки и получения исходного кода. Если что есть арбитраж
в который вы сможете обратиться с претензиями о возврате денег.
2013.11.27 12:20 Заказчик kylinar2012 подтвердил шаг "Согласование ТЗ". Окончательная стоимость работ установлена в размере 100.00 кредитов.
Заказчик приложил Техническое задание
Разработчик Im_hungry подтвердил шаг "Согласование ТЗ". На счете Заказчика (kylinar2012) заморожено 100.00 кредитов
2013.12.01 09:38
"Прошу закрыть заявку в пользу заказчика.ТЗ невозможно реализовать в силу архитектуры МТ5.Спасибо"
2013.12.02 11:28
По результатам арбитража работа была аннулирована администратором Rosh. Заказчику были возвращены замороженные средства в размере 95.00 кредитов. Исполнитель переведен в "Отклоненные".
Вот и все, затем мне письмо на почту:
С уважением, Алекс.
И в чем я виноват? За что штраф? Прошу комментариев Рашида или Рената.
Еще добавлю, что такой советник реализован здесь:
https://www.mql5.com/ru/market/product/714#full_description
Только он мне немного не подходит, т.к. используются специфические индикаторы (к сожалению).
Еслиб я мог поставить свои, то этой разработкой и не заморачивался, а купил там.
И в чем я виноват? За что штраф? Прошу комментариев Рашида или Рената.
С другими претендентами переписки не было?
Я на вашей стороне. Будет очень интересен комментарий Рашида.