Андрей, единственное что я смог узнать и понять — это стратегия на продолжение суточной тенденции движения курса акций на бирже.
Старая добрая идиома :«Тренд — твой друг».«Если сегодня росла цена — завтра тоже будет расти!»
Советник вспоминает закрытия прошлого дня. При открытии следующего дня если цена находится выше закрытия прошлого дня покупаем и ставим стоп. Продажа наоборот тост если цена ниже закрытия прошлого дня продаём.
В этом советнике с отложками всё так и работает — отложки, СЛ, ТП можно передвигать и оставлять где надо. Они там и остаются.
Советник добавляет следующую отложку при переводе очередной отложки с рыночный ордер, т.е. сетка «ползёт» по ходу цены.
— каждую отложку можно перемещать, удалять руками и этот ордер остаётся на том месте, куда передвинут. Советник его не перемещает назад. Можно руками открыть доп.отложку в нужном месте.
Но предложение отправить Канта в Соловки не только не поразило иностранца, но даже привело в восторг. — Именно, именно, — закричал он, и левый зеленый глаз его, обращенный к Берлиозу, засверкал, — ему там самое место! Ведь говорил я ему тогда за завтраком: «Вы, профессор, воля ваша, что‑то нескладное придумали! Оно, может, и умно, но больно непонятно. Над вами потешаться будут».
М. Булгаков. «Мастер и Маргарита»
//+------------------------------------------------------------------+
//| fxb.mq4 |
//| Copyright 2013, MetaQuotes Software Corp. |
//| http://www.mункцql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link "http://www.mункцql5.com"
#property version "1.00"
#property strict
extern string Symb1 = "EURUSD";
extern string Symb2 = "GBPUSD";
extern string Symb3 = "EURGBP";
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---BUY EurGbp = BUY EurUsd + SELL GbpUsd
double s1=0,s2=0,s3=0,hedg1=0,hedg2=0;
s1=MarketInfo(Symb1,MODE_BID);
s2=MarketInfo(Symb2,MODE_BID);
s3=MarketInfo(Symb3,MODE_BID);
hedg1=MarketInfo(Symb1,MODE_BID)/MarketInfo(Symb2,MODE_BID);
hedg2=MarketInfo(Symb1,MODE_BID)-MarketInfo(Symb2,MODE_BID);
Comment("\n Пара 1: ",DoubleToString(s1,5),
"\n Пара 2 ",DoubleToString(s2,5),
"\n Пара 3 ",DoubleToString(s3,5),
"\n Хедж деление: ",DoubleToString(hedg1,5),
"\n Дельта Хедж классика пара3 - хедж деление: ",DoubleToString((s3-hedg1),5),
"\n Хедж вычитание: ",DoubleToString(hedg2,5));
}
//+------------------------------------------------------------------+
Для меня
Так это ясно, как простая гамма.
Александр Пушкин.
«Моцарт и Сальери»
//+------------------------------------------------------------------+
//| Corel2 v.01.mq5 |
//| Copyright 2022, AM2 |
//| https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, AM2"
#property link "https://www.forexsystems.biz"
#property version "1.00"
#include <Trade\Trade.mqh> // Подключаем торговый класс CTrade
CTrade trade;
//--- входные параметры
input string Symb = "USDCHF"; // 2-й символ
input double Lot = 1; // Лот
input int Loss = 0; // Лось в валюте
input int Profit = 50; // Профит в валюте
//input double Delta = 0.33; // Кэф оответствия графиков
input double Sigma = 333; // Расхождение пар
input bool CloseCross = 1; // Закрытие по пересечению
input int Slip = 0; // Проскальзывание
input ulong Magic = 123; // Магик
input string IndName = "Coral";
input int Periods=17; // Period for MA indicator
int ind=0;
double s1[2],s2[2];
int handle1;
int handle2;
double SmoothedBuffer1[];
double SmoothedBuffer2[];
double Delta;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---- Create handle for 2 MA indicators
handle1=iMA(Symbol(),PERIOD_CURRENT,Periods,0,MODE_EMA,PRICE_CLOSE);
handle2=iMA(Symb,PERIOD_CURRENT,Periods,0,MODE_EMA,PRICE_CLOSE);
//---- Copy latest MA indicator values into a buffer
double copied1=CopyBuffer(handle1,0,0,4,SmoothedBuffer1);
double copied2=CopyBuffer(handle2,0,0,4,SmoothedBuffer2);
Delta = (copied1-copied2);
//---
ind=iCustom(NULL,0,IndName,Symb,Delta);
trade.SetExpertMagicNumber(Magic);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Position Profit |
//+------------------------------------------------------------------+
double AllProfit()
{
double p=0;
for(int i=PositionsTotal()-1; i>=0; i--)
{
if(PositionSelectByTicket(PositionGetTicket(i)))
{
if(PositionGetInteger(POSITION_MAGIC)==Magic)
{
p+=PositionGetDouble(POSITION_PROFIT);
}
}
}
return(p);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CloseAll()
{
for(int i=PositionsTotal()-1; i>=0; i--)
{
if(PositionSelectByTicket(PositionGetTicket(i)))
{
if(PositionGetInteger(POSITION_MAGIC)==Magic)
{
if(PositionGetInteger(POSITION_TYPE)<2)
{
trade.PositionClose(PositionGetTicket(i));
}
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;
for(int i=PositionsTotal()-1; i>=0; i--)
{
if(PositionSelectByTicket(PositionGetTicket(i)))
{
if(PositionGetInteger(POSITION_MAGIC)==Magic)
{
if(PositionGetInteger(POSITION_TYPE)<2)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
double Ask1=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
double Bid1=SymbolInfoDouble(_Symbol,SYMBOL_BID);
double Ask2=SymbolInfoDouble(Symb,SYMBOL_ASK);
double Bid2=SymbolInfoDouble(Symb,SYMBOL_BID);
double sigma=MathAbs(s1[0]-s2[0])/_Point;
CopyBuffer(ind,0,0,2,s1);
CopyBuffer(ind,1,0,2,s2);
if(CountTrades()<1 && sigma>Sigma)
{
if(s1[0]<s2[0])
{
trade.Buy(Lot,_Symbol,Ask1,0,0,"");
trade.Sell(Lot,Symb,Bid2,0,0,"");
}
if(s1[0]>s2[0])
{
trade.Sell(Lot,_Symbol,Bid1,0,0,"");
trade.Buy(Lot,Symb,Ask2,0,0,"");
}
}
if((AllProfit()>Profit && Profit>0) || (AllProfit()<-Loss && Loss>0) || (s1[0]>s2[0] && s1[1]<s2[1]&& CloseCross) || (s1[0]<s2[0] && s1[1]>s2[1] && CloseCross))
CloseAll();
Comment("\n Trades: ",CountTrades(),
"\n Profit: ",AllProfit(),
"\n Sigma: ",sigma,
"\n Symbol1: ",s1[0],
"\n Symbol2: ",s2[0],
"\n Delta: ",Delta );
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
4.Судя по данной переписке советник интересует только нас.В-третьих, Вы так и не ответили, кто такой МЫ.
Мы — это Вы и я. Больше в переписке здесь никто не участвует, хотя может и читают.
запрет торговли в текущие сутки если был достигнут профит.
Сейчас советник торгует пока есть обозначенные условия
Т.е. в конце торговых суток пошел откат, а советник продолжает торговать на продолжение тенденции.
ssg