Konstantin Bystrov: Olá a todos. que podem escrever um indicador em mt4, de modo que as sessões de negociação ativa (pode ser definida de 10-18) foram exibidas sob a forma de velas japonesas
Há aqui algum artesão que poderia escrever um EA com base em um indicador informativo da força da moeda. O algoritmo é o seguinte. Estamos esperando que a moeda forte e fraca apareça. No exemplo na imagem da tela, é EUR e USD. Se a diferença for significativa (a ser definida nos parâmetros EA), então abrimos uma posição. No exemplo na imagem da tela, você precisa entrar em uma venda, o que farei na segunda-feira. Na EA, temos que definir o parâmetro de tempo, do qual a EA deve tomar o sinal (diferença na força de diferentes moedas). A diferença de força da moeda é o sinal. Não é necessário parar a perda. É necessário ter lucro. Se o preço vai contra nós, vamos fazer uma média. Em nosso Expert Advisor, prescrevemos o passo médio, o número de ordens, número mágico, tamanho inicial do lote, fator de incremento do lote. Tenho negociado usando este método recentemente; estou muito satisfeito. Para minha percepção, é um graal.
Konstantin Bystrov: Olá a todos. Você pode escrever um indicador em mt4, para exibir sessões de negociação ativas (você pode definir o tempo de 10-18) na forma de velas japonesas
//+------------------------------------------------------------------+//+------------------------------------------------------------------+#property copyright""#property link""#property indicator_chart_windowexternint NumberOfDays = 50;
externstring AsiaBegin = "10:00";
externstring AsiaEnd = "18:00";
externcolor AsiaColor = Goldenrod;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+void init()
{
DeleteObjects();
for(int i=0; i<NumberOfDays; i++)
CreateObjects("AS"+i, AsiaColor);
Comment("");
}
//+------------------------------------------------------------------+//| Custor indicator deinitialization function |//+------------------------------------------------------------------+void deinit()
{
DeleteObjects();
Comment("");
}
//+------------------------------------------------------------------+bool CreateObjects(
conststring name="Rectangle", // имя прямоугольникаconstcolor clr=clrRed, // цвет прямоугольникаconstlong chart_ID=0, // ID графикаconstint sub_window=0, // номер подокнаdatetime time1=0, // время первой точкиdouble price1=0, // цена первой точкиdatetime time2=0, // время второй точкиdouble price2=0, // цена второй точкиconstENUM_LINE_STYLE style=STYLE_SOLID, // стиль линий прямоугольникаconstint width=2, // толщина линий прямоугольникаconstbool fill=false, // заливка прямоугольника цветомconstbool back=false, // на заднем планеconstbool selection=false, // выделить для перемещенийconstbool hidden=true, // скрыт в списке объектовconstlong z_order=0) // приоритет на нажатие мышью
{
//--- сбросим значение ошибкиResetLastError();
//--- создадим прямоугольник по заданным координатамif(!ObjectCreate(chart_ID,name,OBJ_RECTANGLE,sub_window,time1,price1,time2,price2))
{
Print(__FUNCTION__,
": не удалось создать прямоугольник! Код ошибки = ",GetLastError());
return(false);
}
//--- установим цвет прямоугольникаObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль линий прямоугольникаObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим толщину линий прямоугольникаObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- включим (true) или отключим (false) режим заливки прямоугольникаObjectSetInteger(chart_ID,name,OBJPROP_FILL,fill);
//--- отобразим на переднем (false) или заднем (true) планеObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим выделения прямоугольника для перемещений//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection//--- по умолчанию равен true, что позволяет выделять и перемещать этот объектObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектовObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- установим приоритет на получение события нажатия мыши на графикеObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- успешное выполнениеreturn(true);
}
//+------------------------------------------------------------------+void DeleteObjects()
{
for(int i=0; i<NumberOfDays; i++)
ObjectDelete("AS"+i);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+void start()
{
datetime dt=CurTime();
for(int i=0; i<NumberOfDays; i++)
{
DrawObjects(dt, "AS"+i, AsiaBegin, AsiaEnd);
dt=decDateTradeDay(dt);
while(TimeDayOfWeek(dt)>5)
dt=decDateTradeDay(dt);
}
}
//+------------------------------------------------------------------+void DrawObjects(datetime dt, string no, string tb, string te)
{
datetime t1, t2;
double p1, p2;
int b1, b2;
t1=StrToTime(TimeToStr(dt, TIME_DATE)+" "+tb);
t2=StrToTime(TimeToStr(dt, TIME_DATE)+" "+te);
if(!TimeDayOfWeek(t1))
return;
b1=iBarShift(NULL, 0, t1);
b2=iBarShift(NULL, 0, t2);
p1=High[Highest(NULL, 0, MODE_HIGH, b1-b2, b2)];
p2=Low [Lowest(NULL, 0, MODE_LOW, b1-b2, b2)];
ObjectSet(no, OBJPROP_TIME1, t1);
ObjectSet(no, OBJPROP_PRICE1, p1);
ObjectSet(no, OBJPROP_TIME2, t2);
ObjectSet(no, OBJPROP_PRICE2, p2);
}
//+------------------------------------------------------------------+datetime decDateTradeDay(datetime dt)
{
int ty=TimeYear(dt);
int tm=TimeMonth(dt);
int td=TimeDay(dt);
int th=TimeHour(dt);
int ti=TimeMinute(dt);
td--;
if(td==0)
{
tm--;
if(tm==0)
{
ty--;
tm=12;
}
if(tm==1 || tm==3 || tm==5 || tm==7 || tm==8 || tm==10 || tm==12)
td=31;
if(tm==2)
if(MathMod(ty, 4)==0)
td=29;
else
td=28;
if(tm==4 || tm==6 || tm==9 || tm==11)
td=30;
}
return(StrToTime(ty+"."+tm+"."+td+" "+th+":"+ti));
}
//+------------------------------------------------------------------+
Olá Queridos gurus programadores, peço sua ajuda para terminar este robô.
Eu não sou programador, este robô é montado por mim mesmo a partir de várias partes encontradas na Internet, mas não consigo anexar as duas funções restantes que gostaria de ver. Por favor, me ajude. Penso que para você não será tão difícil quanto para mim. Se você gostaria de ajudar, favor fazer uma função que feche uma ordem pendente depois que uma de duas ordens pendentes for acionada. E a segunda função deve aumentar automaticamente muito do pedido ("suponha" para cada $50 de saldo 0,01 lote, quando você atingir $100 o robô aumentará automaticamente um lote em 0,02). Obrigado antecipadamente por sua ajuda.
externint TakeProfit = 100.0;
externbool AllPositions = True; // Управлять всеми позициямиexternbool ProfitTrailing = True; // Тралить только профитexternint TrailingStop = 50; // Фиксированный размер тралаexternint TrailingStep = 0; // Шаг тралаexternbool UseSound = False; // Использовать звуковой сигналexternstring NameFileSound = "expert.wav"; // Наименование звукового файлаvoid start()
{
double TakeProfitLevelB;
double TakeProfitLevelS;
double BuyStart = Ask + 400*_Point;
double SellStart = Bid - 400*_Point;
TakeProfitLevelB = BuyStart + TakeProfit*Point;
TakeProfitLevelS = SellStart - TakeProfit*Point;
if (Open[1]==Close[1]&& OrdersTotal()==0)
{
int BuyTicket = OrderSend(Symbol(),OP_BUYSTOP,0.10,BuyStart,3,0,TakeProfitLevelB,NULL,0,0,Green);
int SellTicket = OrderSend(Symbol(),OP_SELLSTOP,0.10,SellStart,3,0,TakeProfitLevelS,NULL,0,0,Blue);
}
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (AllPositions || OrderSymbol()==Symbol()) {
TrailingPositions();
}
}
}
}
void TrailingPositions()
{
double pBid, pAsk, pp;
pp = MarketInfo(OrderSymbol(), MODE_POINT);
if (OrderType()==OP_BUY) {
pBid = MarketInfo(OrderSymbol(), MODE_BID);
if (!ProfitTrailing || (pBid-OrderOpenPrice())>TrailingStop*pp) {
if (OrderStopLoss()<pBid-(TrailingStop+TrailingStep-1)*pp) {
ModifyStopLoss(pBid-TrailingStop*pp);
return;
}
}
}
if (OrderType()==OP_SELL) {
pAsk = MarketInfo(OrderSymbol(), MODE_ASK);
if (!ProfitTrailing || OrderOpenPrice()-pAsk>TrailingStop*pp) {
if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) {
ModifyStopLoss(pAsk+TrailingStop*pp);
return;
}
}
}
}
void ModifyStopLoss(double ldStopLoss)
{
bool fm;
fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
if (fm && UseSound) PlaySound(NameFileSound);
}
Obrigado querido gss por seu interesse em meu pedido. Esta é a razão pela qual eu decidi me dirigir ao guru MQL4. O código que coloquei funciona. Eu o construí com a ajuda de vários Expert Advisors, ou, para ser mais preciso, usei apenas a função Trailing Stop. O resto eu mesmo inventei (em relação às ordens pendentes). Gostaria de pedir que você e outros gurus dessem uma olhada no meu código e adicionassem mais duas funções a este robô, se não se importam.
1) Para apagar uma ordem pendente quando uma delas é acionada.
2) Aumento automático do lote (para cada 50$ 0,01, ou seja, para 100$ será de 0,02)
Olá a todos. que podem escrever um indicador em mt4, de modo que as sessões de negociação ativa (pode ser definida de 10-18) foram exibidas sob a forma de velas japonesas
ok
Boa tarde!
Há aqui algum artesão que poderia escrever um EA com base em um indicador informativo da força da moeda. O algoritmo é o seguinte. Estamos esperando que a moeda forte e fraca apareça. No exemplo na imagem da tela, é EUR e USD. Se a diferença for significativa (a ser definida nos parâmetros EA), então abrimos uma posição. No exemplo na imagem da tela, você precisa entrar em uma venda, o que farei na segunda-feira. Na EA, temos que definir o parâmetro de tempo, do qual a EA deve tomar o sinal (diferença na força de diferentes moedas). A diferença de força da moeda é o sinal. Não é necessário parar a perda. É necessário ter lucro. Se o preço vai contra nós, vamos fazer uma média. Em nosso Expert Advisor, prescrevemos o passo médio, o número de ordens, número mágico, tamanho inicial do lote, fator de incremento do lote. Tenho negociado usando este método recentemente; estou muito satisfeito. Para minha percepção, é um graal.
Olá a todos. Você pode escrever um indicador em mt4, para exibir sessões de negociação ativas (você pode definir o tempo de 10-18) na forma de velas japonesas
Olá Queridos gurus programadores, peço sua ajuda para terminar este robô.
Eu não sou programador, este robô é montado por mim mesmo a partir de várias partes encontradas na Internet, mas não consigo anexar as duas funções restantes que gostaria de ver. Por favor, me ajude. Penso que para você não será tão difícil quanto para mim. Se você gostaria de ajudar, favor fazer uma função que feche uma ordem pendente depois que uma de duas ordens pendentes for acionada. E a segunda função deve aumentar automaticamente muito do pedido ("suponha" para cada $50 de saldo 0,01 lote, quando você atingir $100 o robô aumentará automaticamente um lote em 0,02). Obrigado antecipadamente por sua ajuda.
Veja o e-News-Lucky$.mq4.
Veja o Método de Seleção de Tamanho de Posição Fixo-Proporcional (R. Jones) - MQL4 e MetaTrader 4 - MQL4 Algo-Traders Forum - Página 3 (mql5.com)
Veja o e-News-Lucky$.mq4.
Veja o Método de Seleção de Tamanho da Posição Fixo-Proporcional (R. Jones) - MQL4 e MetaTrader 4 - MQL4 Algo-Trader Forum - Página 3 (mql5.com)
Olá a todos, confira minha idéia para um indicador, para não enviar spam em todos os posts, aqui está o link
https://www.mql5.com/ru/forum/35071/page144#comment_22289427
ouseja,se o negócio for lucrativo, ou seja, o pedido avança --- ou seja, em caso de movimento inverso, a fechadura será positiva.
2.No caso de abrir qualquer parte da fechadura, uma ordem para a diferença deve ser colocada.
parece ser tudo. Mais uma vez --- o Expert Advisor não deve fechar por si sósem nenhum botão adicional no gráfico.