Помощь в кодировании - страница 258

 
Tomcat98:
Привет Младен, привет всем,

Проклятый новый Build!

С B625 у меня появились новые предупреждения.

"Возвращаемое значение 'OrderSelect' должно быть проверено"

для следующего кода:

"OrderSelect(i,SELECT_BY_POS,MODE_TRADES);".

Как это исправить?

Спасибо за все.

Tomcat98

Tomcat98

Сделайте следующее :

объявите одну глобальную булевую переменную (например, так) :

bool dummyResult;

А затем просто поместите "dummyResult =" перед OrderSelect - тогда у вас получится следующее:

dummyResult = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

 
Tomcat98:
Привет Mladen, привет всем,

Проклятый новый Build!

С B625 у меня появились новые предупреждения.

"Возвращаемое значение 'OrderSelect' должно быть проверено"

для следующего кода:

"OrderSelect(i,SELECT_BY_POS,MODE_TRADES);".

Как это исправить?

Спасибо за все.

Tomcat98

Ну, от этого можно избавиться ценой некоторых усилий.

Но у меня есть постоянное предупреждение, которое я не могу убрать никакими способами (кроме удаления строки исходного кода):

struct Empty {};[/CODE]

results in

[CODE]! struct has no members, size assigned to 1 byte

, что является бесполезной информацией, если я использую его как супертип только для вызовов dll (я не имею представления о другом использовании пустой структуры).

 

Привет, Младен,

Да, все работает:

Отличная работа.

Большое спасибо за вашу помощь.

Искренне.

Tomcat98

 

Привет всем,

С некоторых пор я периодически получаю следующую ошибку в одном из моих индикаторов, который я использую в своем советнике.

2014.04.10 09:01:49.533 2014.01.08 03:45 Access violation write to 0xFFFFFFFE in 'C:\Users\...\AppData\Roaming\MetaQuotes\Terminal\D5D5AE2430FC68F628F143CAFA9XXXX\MQL4\indicators\MyDailyFibo.ex4'

Я использую MT версии 4. Build 625

Пожалуйста, помогите мне найти первопричину этой проблемы. Дайте мне знать, если вам нужно заглянуть в индикатор. Проблема возникает не постоянно, но очень часто...

Спасибо и наилучшие пожелания,

Антоний

 
Antony1:
Привет всем,

С некоторых пор я периодически получаю следующую ошибку в одном из моих индикаторов, который я использую в своем советнике.

2014.04.10 09:01:49.533 2014.01.08 03:45 Access violation write to 0xFFFFFFFE in 'C:\Users\...\AppData\Roaming\MetaQuotes\Terminal\D5D5AE2430FC68F628F143CAFA9XXXX\MQL4\indicators\MyDailyFibo.ex4'

Я использую MT версии 4. Build 625

Пожалуйста, помогите мне найти первопричину этой проблемы. Дайте мне знать, если вам нужно заглянуть в индикатор. Проблема возникает не постоянно, но очень часто...

Спасибо и наилучшие пожелания,

Антоний

Антони

Это не проблема с вашим индикатором.

Это проблема нового metatrader 4 (у него проблемы с правильным распределением памяти и доступом к ней - build 628 немного лучше, но не намного).

 

Здравствуйте,

Мне нужна помощь с индикатором, который я пытался написать (Wilder trailing stop candles MTF).

Первая проблема: мой индикатор рисует сигнал на покупку на 1 бар раньше, чем должен быть, и я знаю, что это связано с тем, как рассчитывается наклон, но я не знаю, как это исправить.

Вторая проблема: цвета не совпадают, возможно я что-то напутал с буферами в этой части, но я сам себя запутал и не могу это исправить :

if (UpLineBuffer!=EMPTY_VALUE)

{

UpBodyBuffer = High;

DnBodyBuffer = Low;

UpWickBuffer = MathMax(Open,Close);

DnWickBuffer = MathMin(Open,Close);

}

else

{

DnBodyBuffer = High;

UpBodyBuffer = Low;

DnWickBuffer = MathMax(Open,Close);

UpWickBuffer = MathMin(Open,Close);

wilders_trailing_stop_candles_mtf.mq4

wilders_trailing_stop_mtf_1.mq4

wilders_trailing_stop.mq4

 
thefxpros:
Привет,

Мне нужна помощь с индикатором, который я пытался написать (Wilder trailing stop candles MTF).

Первая проблема: мой индикатор рисует сигнал на покупку на 1 бар раньше, чем должен быть, и я знаю, что это связано с тем, как рассчитывается наклон, но я не знаю, как это исправить.

Вторая проблема: цвета не совпадают, возможно я что-то напутал с буферами в этой части, но я сам себя запутал и не могу это исправить :

if (UpLineBuffer!=EMPTY_VALUE)

{

UpBodyBuffer = High;

DnBodyBuffer = Low;

UpWickBuffer = MathMax(Open,Close);

DnWickBuffer = MathMin(Open,Close);

}

else

{

DnBodyBuffer = High;

UpBodyBuffer = Low;

DnWickBuffer = MathMax(Open,Close);

UpWickBuffer = MathMin(Open,Close);

wilders_trailing_stop_candles_mtf.mq4

wilders_trailing_stop_mtf_1.mq4

wilders_trailing_stop.mq4

мммхх, цвета совпадают. Может быть, мне нужно написать сначала фитильные буфера, а потом телесные буфера?

 
thefxpros:
мммххх, цвета совпадают. Может быть, мне нужно написать сначала wickbuffers, а потом bodybuffers?

thefxpros

Самый простой способ - изменить индикатор трейлинг-стопа Wilders (иначе вы попадете в сложные конструкции if then else). Вот версия с одним внутренним буфером, который вам нужен: тренд. Если он равен 1, то тренд восходящий, если равен -1, то тренд нисходящий. Используйте этот индикатор вместо оригинального и просто считайте значение буфера 4 - после этого все просто

 
mladen:
thefxpros Самый простой способ - изменить индикатор трейлинг-стопа Wilders (иначе вы попадете в сложные конструкции if then else). Вот версия с одним внутренним буфером, который вам нужен : trend. Если он равен 1, то тренд восходящий, если равен -1, то тренд нисходящий. Используйте этот индикатор вместо оригинального и просто считывайте значение буфера 4 - дальше все просто

Вот так?

//------------------------------------------------------------------

#property copyright "thefxpros"

#property link "thefxpros@katamail.com"

//------------------------------------------------------------------

#property indicator_chart_window

#property indicator_buffers 4

#property indicator_color1 LimeGreen

#property indicator_color2 Orange

#property indicator_color3 DarkGreen

#property indicator_color4 FireBrick

#property indicator_width1 1

#property indicator_width2 2

//

//

//

extern int TimeFrame = 0;

extern int Length = 2;

extern double Coeff = 1.75;

extern color UpBodyColor = LimeGreen;

extern color DnBodyColor = Orange;

extern color UpWickColor = DarkGreen;

extern color DnWickColor = FireBrick;

extern int WickWidth = 1;

extern int BodyWidth = 2;

//

double UpBodyBuffer[];

double DnBodyBuffer[];

double UpWickBuffer[];

double DnWickBuffer[];

double TrendBuffer[];

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int init()

{

IndicatorBuffers(6);

SetIndexBuffer(0,UpWickBuffer); SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, WickWidth, UpWickColor);

SetIndexBuffer(1,DnWickBuffer); SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, WickWidth, DnWickColor);

SetIndexBuffer(2,UpBodyBuffer); SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, BodyWidth, UpBodyColor);

SetIndexBuffer(3,DnBodyBuffer); SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, BodyWidth, DnBodyColor);

SetIndexBuffer(4,TrendBuffer);

IndicatorShortName("Wilders trailing stop MTF candles("+Length+","+Coeff+")");

Length = MathMax(Length,1);

switch(TimeFrame)

{

case 1 : string TimeFrameStr="Period_M1"; break;

case 5 : TimeFrameStr="Period_M5"; break;

case 15 : TimeFrameStr="Period_M15"; break;

case 30 : TimeFrameStr="Period_M30"; break;

case 60 : TimeFrameStr="Period_H1"; break;

case 240 : TimeFrameStr="Period_H4"; break;

case 1440 : TimeFrameStr="Period_D1"; break;

case 10080 : TimeFrameStr="Period_W1"; break;

case 43200 : TimeFrameStr="Period_MN1"; break;

default : TimeFrameStr="Current Timeframe";

}

IndicatorShortName("Wilders trailing stop MTF candles("+TimeFrameStr+")");

return(0);

}

//----

//+------------------------------------------------------------------+

//| MTF function |

//+------------------------------------------------------------------+

int start()

{

datetime TimeArray[];

int i,limit,y=0,counted_bars=IndicatorCounted();

// Plot defined time frame on to current time frame

ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);

limit= MathMin(Bars-counted_bars+3*TimeFrame/Period(),Bars-1);

for(i=0,y=0;i<limit;i++)

{

if (Time<TimeArray[y]) y++;

/*********************************************************************************************************

Add your main indicator loop below. You can reference an existing indicator with its iName or iCustom.

Rule 1: Add extern inputs above for all neccesary values

Rule 2: Use 'TimeFrame' for the indicator time frame

Rule 3: Use 'y' for your indicator's shift value

********************************************************************************************************/

int slope=iCustom(Symbol(),TimeFrame,"Wilders trailing stop with trend",Length,Coeff,4,y);

if (slope == 1)

{

UpWickBuffer = High;

DnWickBuffer = Low;

UpBodyBuffer = MathMax(Open,Close);

DnBodyBuffer = MathMin(Open,Close);

}

if (slope == -1)

{

DnWickBuffer = High;

UpWickBuffer = Low;

DnBodyBuffer = MathMax(Open,Close);

UpBodyBuffer = MathMin(Open,Close);

}

}

return(0);

}

//+------------------------------------------------------------------+

Я не могу поверить, это работает с первой попытки ..... Есть ли что-то еще, что я могу написать лучше (удалить трендбуфер да, я видел сейчас), чем я сделал?

спасибо Младен

Файлы:
cattura_2.jpg  72 kb
 
mladen:
Вы не можете рисовать линии длиной в дюймы на графике (это совершенно невозможно с помощью metatrader и я сомневаюсь, что это возможно в любой торговой платформе). И эти линии являются объектами горизонтальных линий, а не трендовых линий (трендовые линии могут быть ограничены, а горизонтальные - нет). Если нет точного математического правила, как должны быть нарисованы линии (в зависимости от цены, а не в дюймах), они просто не могут быть нарисованы, и из этой последовательности чисел кажется, что правила уникальны для каждой линии.

Спасибо, я нашел лучший вариант, который вы можете редактировать. Это был незаконченный проект, который кодер сделал на forexfactory, и я больше не могу его найти. Пожалуйста, замените 00, 20, 50, 80 на мои цифры. Линии также группируются вместе, а не просто размещаются на специальных числах 5, 15, 31, 45 и 67.

Спасибо

Файлы: