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

 
mladen:
stevenpun Вы говорите, что покупка имеет 0.1 лот + 0.2 лота, а продажа должна быть 0.4 лота. Не могли бы вы уточнить это?

Здравствуйте, mladen, извините за поздний ответ.

Потому что болел несколько дней.

Я сделал картинку.

Например, когда на покупку открыто 2 ордера (0.1 Lot + 0.2 Lot ), но вдруг поезд изменился на продажу.

Ea откроет продажу на 0.1 лота, но я хочу, чтобы она открылась на 0.4 лота.

Возможно ли это изменить?

Файлы:
lot_explain.jpg  121 kb
 
hermes:
Еще раз здравствуйте,

Я пробовал использовать вышеуказанную функцию с комментарием, но она отображала только Max. Можете ли вы помочь с двумя функциями. Одна отображает непосредственную цену линии выше Bid, а вторая - линию ниже Bid. Спасибо.

Вот код.

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

//| SimpleGrid.mq4+

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

#include

#include

#property strict

// экспортируемые переменные

extern string GridStartingPrice = " Начальная цена для размещения линий ";

extern double GSP = 0.0;

extern int GR = 5;

extern double GridStep = 5;

extern color CGL = Золотой;

extern color BGL = Green;

extern color SGL = Red;

extern bool ClearAllObjects = False;

// локальные переменные

double PipValue = 1; // эта переменная здесь для поддержки 5-значных брокеров

bool Terminated = false;

string LF = "\n"; // используйте это в пользовательских или утилитных блоках, где вам нужны переводы строк

int NDigits = 4; // используется в основном для NormalizeDouble в блоках типа Flex

int ObjCount = 0; // подсчет всех объектов, созданных на графике, позволяет создавать объекты с уникальными именами

int current = 0;

int init()

{

NDigits = Digits;

if (false) ObjectsDeleteAll(); // очистить график

Comment(""); // очистить график

return(0);

}

// начало работы эксперта

int start()

{

if (Bars < 10)

{

Комментарий("Недостаточно баров");

return (0);

}

if (Terminated == true)

{

Комментарий("Советник прекратил работу.");

return (0);

}

OnEveryTick7();

return (0);

}

void OnEveryTick7()

{

PipValue = 1;

if (NDigits == 3 || NDigits == 5) PipValue = 10;

CentreGridLine();

}

void CentreGridLine()

{ if (ObjectFind("CGL") == (-1) )

{

{

string objName = "CGL" ;

ObjectCreate(objName, OBJ_HLINE, 0, Time[0],GSP);

ObjectSet(objName, OBJPROP_PRICE1, GSP);

ObjectSet(objName, OBJPROP_COLOR, CGL);

}

TradeLine();

UprBnd();

LwrBnd();

}

}

void TradeLine()

{

int i;

double GridStep1= (GridStep*2);

double BGSP= (GSP+((GridStep/2)*PipValue*Point)) ;

double SGSP= (GSP-((GridStep/2)*PipValue*Point));

double BBGSP= (BGSP-((GridStep*(GR))*PipValue*Point)) ;

double SSGSP= (SGSP+((GridStep*(GR))*PipValue*Point));

{

for(i=0; i<GR;i++)

{

SGL("Sell "+i,BBGSP+GridStep1*i*PipValue*Point);

}

}

{

for(i=0; i<GR;i++)

{

BGL("Buy "+i,SSGSP-GridStep1*i*PipValue*Point);

}

}

}

void BGL(string objName, double price)

{

ObjectCreate(objName, OBJ_HLINE, 0, 0, цена);

ObjectSet(objName, OBJPROP_STYLE, STYLE_SOLID);

ObjectSet(objName, OBJPROP_WIDTH, 1);

ObjectSet(objName, OBJPROP_COLOR, BGL);

}

void SGL(string objName, double price)

{

ObjectCreate(objName, OBJ_HLINE, 0, 0, 0, price);

ObjectSet(objName, OBJPROP_STYLE, STYLE_SOLID);

ObjectSet(objName, OBJPROP_WIDTH, 1);

ObjectSet(objName, OBJPROP_COLOR, SGL);

}

void UprBnd()

{ if (ObjectFind("UPRBND") == (-1) )

{

double BGSP= (GSP+((GridStep/2)*PipValue*Point)) ;

double price= (BGSP+((GridStep*(GR))*PipValue*Point)) ;

string objName = "UPRBND" ;

ObjectCreate(objName, OBJ_HLINE, 0, Time[0], price );

ObjectSet(objName, OBJPROP_PRICE1,price);

ObjectSet(objName, OBJPROP_COLOR, DodgerBlue);

ObjectSet(objName, OBJPROP_WIDTH,3);

}

}

void LwrBnd()

{ if (ObjectFind("LWRBND") == (-1) )

{

double SGSP= (GSP-((GridStep/2)*PipValue*Point));

double price= (SGSP-((GridStep*(GR))*PipValue*Point));

string objName = "LWRBND" ;

ObjectCreate(objName, OBJ_HLINE, 0, Time[0], price );

ObjectSet(objName, OBJPROP_PRICE1,price);

ObjectSet(objName, OBJPROP_COLOR, Tomato);

ObjectSet(objName, OBJPROP_WIDTH, 3);

}

}

int deinit()

{

if (ClearAllObjects) ObjectsDeleteAll();

return (0);

}

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

Hermes

Можете ли вы прикрепить файл mq4?

 
mladen:
Гермес Можете ли вы прикрепить файл mq4?

Вот он. Спасибо

Файлы:
simpleg.mq4  4 kb
 

Привет,

Мне нужна помощь с Ea, которую я сделал, она связана с 2 скользящими средними и 2 различными таймфреймами для фильтрации тренда, я хотел бы добавить индикатор RSI, чтобы фильтровать сделки, настройка, например, RSI период 8 уровень 50, если выше уровня RSI 50 при пересечении мы открываем только рыночные ордера на продажу, если ниже уровня RSI 50 при пересечении мы открываем только рыночные ордера на покупку. Я прилагаю Ea, сначала он был связан с keltnerchannels, но теперь я хочу, чтобы он использовался только как Ma1 и Ma2.

Может ли кто-нибудь помочь мне с этими изменениями?

Спасибо

Файлы:
 
hermes:
Вот оно. Спасибо

Гермес

Попробуйте это: simpleg_1.mq4

Файлы:
simpleg_1.mq4  6 kb
 
daniel1983:
Привет,

Мне нужна помощь с Ea, которую я сделал, она связана с 2 скользящими средними и 2 различными таймфреймами для фильтрации тренда, я хотел бы добавить индикатор RSI, чтобы фильтровать сделки, настройка, например, RSI период 8 уровень 50, если выше уровня RSI 50 при пересечении мы открываем только рыночные ордера на продажу, если ниже уровня RSI 50 при пересечении мы открываем только рыночные ордера на покупку. Я прилагаю Ea, сначала он был связан с keltnerchannels, но теперь я хочу, чтобы он использовался только как Ma1 и Ma2.

Может ли кто-нибудь помочь мне с этими изменениями?

Спасибо

daniel1983

Почти наверняка вы никогда не получите пересечений mas и rsis одновременно (что означает - вы почти никогда не получите сигналов). Попробуйте: сделайте простой индикатор, который делает то, что вы описали, и вы увидите, как редко эти условия происходят одновременно.

 
mladen:
daniel1983 Почти наверняка вы никогда не получите пересечений mas и rsis одновременно (а значит - почти никогда не получите сигналов). Попробуйте: сделайте простой индикатор, который делает то, что вы описали, и вы увидите, насколько редко эти условия происходят одновременно.

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

Я имею в виду

- на любом уровне от 0 до 50 только продавать

- на любом уровне между 50 и 100 только покупать,

не в этой же точке пересечения, пересечение может быть на любом уровне (43, 41, 18, 25) для рыночных ордеров на покупку, подтверждающих тренд более высокого таймфрейма. Я протестировал это и около 80% открытых ордеров, похоже, с этим фильтром не откроются в противоположном направлении.

Прямо сейчас Ea открывает ордер на покупку, когда пересечение начинает нисходящий тренд, с этим фильтром в 80% случаев он будет фильтровать это пересечение, не вводя ордер в этой точке. где пересекаются эти Ma.

В этом Ea я ввел более высокий таймфрейм, но я провел тест с лучшими результатами, используя более низкий таймфрейм для фильтрации тренда.

Я прилагаю картинку с примером настроенного теста:

Для EURUSD

В этом случае я использую EMA 2 и EMA 67, и RSI (8) таймфрейм 1мин и Hitimeframe 5мин, в этом случае у вас есть рыночный ордер на покупку, который является убыточным, этот рыночный ордер на покупку происходит при пересечении EMa's, но с RSI на уровне ниже 50.

Затем у вас есть рыночный ордер на продажу, который открывается на пересечении, но с RSI ниже 50, и этот ордер является правильным рыночным ордером, который я хочу отфильтровать от всех сигналов.

Возможно ли это сделать?

Спасибо

Даниэль

Файлы:
rsi_filter.png  32 kb
 
mladen:
Гермес Попробуйте это : simpleg_1.mq4

Здравствуйте, Младен,

Наконец-то он работает, используя это. Спасибо

void LoopBS()

{

double max =(ObjectGet("UPRBND",OBJPROP_PRICE1));

double min =(ObjectGet("LWRBND",OBJPROP_PRICE1));

for (int i =ObjectsTotal()-1; i>=0; i--)

{

string name = ObjectName(i);

if (StringSubstr(name,0,3)=="Buy")

{

double BS=ObjectGet(name,OBJPROP_PRICE1);

if ((Ask<BS) && (BSmin))

{

max = ObjectGet(name,OBJPROP_PRICE1);

{

Comment(DoubleToStr(BS,Digits)," ");

}

}

}

}

}

 

Неточные сигналы

Неточные сигналы

Уважаемые, мастера! Не могли бы вы лучше подавать сигналы. М1, М5, М15

Файлы:
.......png  31 kb
 
DMNIK:
Неточные сигналы Уважаемые, мастера! Не могли бы вы лучше сигнализировать. М1, М5, М15

Он просто показывает, больше или меньше ли последние 3 закрытия, чем последние 3 открытия. Улучшать в этом нечего