input ulong Magic = 123; // Magic number
должен быть одинаковый у открытой позиции и у советника, или = 0 если позиция открыта «руками».
input ulong Magic = 123; // Magic number
//----------------------------------------------------------------------------
if(SafePart>0){
if(CountOrders(0)!=0 && rsi_1<50 && rsi>50 && OrderLots()==Lots) rez=OrderClose(OrderTicket(),OrderLots()*SafePart,NormalizeDouble(Bid,Digits),Slip,White);
if(CountOrders(1)!=0 && rsi_1>50 && rsi<50 && OrderLots()==Lots) rez=OrderClose(OrderTicket(),OrderLots()*SafePart,NormalizeDouble(Ask,Digits),Slip,White);
}
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
if(SafePart>0){
if(CountOrders(0)!=0 && rsi_1<K && rsi>K && OrderLots()==Lots) rez=OrderClose(OrderTicket(),OrderLots()*SafePart,NormalizeDouble(Bid,Digits),Slip,White);
if(CountOrders(1)!=0 && rsi_1>K && rsi<K && OrderLots()==Lots) rez=OrderClose(OrderTicket(),OrderLots()*SafePart,NormalizeDouble(Ask,Digits),Slip,White);
}
//----------------------------------------------------------------------------
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//----------------------------------------------------------------------------
if(SafePart>0){
if(CountOrders(0)!=0 && rsi_1<K && rsi>K && OrderLots()==Lots) rez=OrderClose(OrderTicket(),OrderLots()*SafePart,NormalizeDouble(Bid,Digits),Slip,White);
if(CountOrders(1)!=0 && rsi_1>K && rsi<K && OrderLots()==Lots) rez=OrderClose(OrderTicket(),OrderLots()*SafePart,NormalizeDouble(Ask,Digits),Slip,White);
}
//----------------------------------------------------------------------------
extern bool Reves = false;
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
bool rez;
double rsi = iRSI(NULL,0,RSI,0,Shift);//значение индикатора имеет значение от 0 до 100
double rsi_1 = iRSI(NULL,0,RSI,0,Shift+1);//значение индикатора имеет значение от 0 до 100
bool buy=rsi<Level; // сигнал на покупку - значение индикатора ниже уровня 30
bool sell=rsi>100-Level;//сигнал на продажу - значение индикатора выше 100-30 = 70
if(t!=Time[0] && TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()))
{
if(Reves){
if(sell && CountOrders(0)<1)
PutOrder(0,Ask);
if(buy && CountOrders(1)<1)
PutOrder(1,Bid);
}
else{
if(buy && CountOrders(0)<1)
PutOrder(0,Ask);
if(sell && CountOrders(1)<1)
PutOrder(1,Bid);
}
t=Time[0];
}
//----------------------------------------------------------------------------
if(SafePart>0){
if(CountOrders(0)!=0 && rsi_1<50 && rsi>50 && OrderLots()==Lots) rez=OrderClose(OrderTicket(),OrderLots()*SafePart,NormalizeDouble(Bid,Digits),Slip,White);
if(CountOrders(1)!=0 && rsi_1>50 && rsi<50 && OrderLots()==Lots) rez=OrderClose(OrderTicket(),OrderLots()*SafePart,NormalizeDouble(Ask,Digits),Slip,White);
}
//----------------------------------------------------------------------------
if(!TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()) && CloseOn>0)
{
CloseAll();
}
}
//+------------------------------------------------------------------+
extern double SafePart = 0.5; // часть лота для закрытия
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
bool rez;
double rsi = iRSI(NULL,0,RSI,0,Shift);//значение индикатора имеет значение от 0 до 100
double rsi_1 = iRSI(NULL,0,RSI,0,Shift+1);//значение индикатора имеет значение от 0 до 100
bool buy=rsi<Level; // сигнал на покупку - значение индикатора ниже уровня 30
bool sell=rsi>100-Level;//сигнал на продажу - значение индикатора выше 100-30 = 70
if(t!=Time[0] && TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()) && CountTrades()<1)
{
if(buy)
PutOrder(0,Ask);
if(sell)
PutOrder(1,Bid);
t=Time[0];
}
//----------------------------------------------------------------------------
if(SafePart>0){
if(CountOrders(0)!=0 && rsi_1<50 && rsi>50 && OrderLots()==Lots) rez=OrderClose(OrderTicket(),OrderLots()*SafePart,NormalizeDouble(Bid,Digits),Slip,White);
if(CountOrders(1)!=0 && rsi_1>50 && rsi<50 && OrderLots()==Lots) rez=OrderClose(OrderTicket(),OrderLots()*SafePart,NormalizeDouble(Ask,Digits),Slip,White);
}
//----------------------------------------------------------------------------
if(!TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()) && CloseOn>0)
{
CloseAll();
}
}
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу |
//+------------------------------------------------------------------+
int CountOrders(int type=-1){
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==type || type==-1) count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
double rsi = iRSI(NULL,0,RSI,0,Shift);//значение индикатора имеет значение от 0 до 100
bool buy=rsi<Level; // сигнал на покупку - значение индикатора ниже уровня 30
bool sell=rsi>100-Level;//сигнал на продажу - значение индикатора выше 100-30 = 70
extern int Level_b = 30; // уровень RSI
extern int Level_s = 70; // уровень RSI
bool buy=rsi<Level_b; // сигнал на покупку - значение индикатора ниже уровня 30
bool sell=rsi>Level_s;//сигнал на продажу - значение индикатора выше 70
Т.е. Тинькофф сам по себе ухудшает положение клиентов? Не по указке сверху?
ЦБ изучает введение комиссий рядом банков по валютным счетам и при необходимости примет надзорные меры. Об этом говорится в сообщении на сайте регулятора.
ЦБ изучает введение рядом банков комиссий по валютным счетам
globallookpress.com © Konstantin Kokoshkin
«Ряд банков сообщил о планах введения комиссий за обслуживание валютных счетов граждан. Банк России, понимая озабоченность банков рисками работы с валютой, тем не менее считает, что банки не должны ухудшать условия обслуживания уже существующих клиентов», — отмечается в сообщении.
Ранее стало известно, что Тинькофф Банк с 23 июня вводит комиссию за обслуживание счетов в иностранной валюте.
С 8 июня Центробанк России повысил порог перевода средств за рубеж для физических лиц с $50 тыс. до $150 тыс. в месяц.
//+------------------------------------------------------------------+
//| ScreenShot.mq4 |
//| Copyright 2022, cmillion@narod.ru |
//| http://cmillion.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, cmillion@narod.ru"
#property link "http://cmillion.ru"
#property version "1.00"
#property strict
#property indicator_chart_window
#property description "Индикатор записывает скриншот на каждой свече. The indicator records a screenshot on each candle"
extern ENUM_TIMEFRAMES TimeFrame = 0;
//+------------------------------------------------------------------+
//| Индикатор записывает скриншот на каждой свече
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
datetime TimeScren=0;
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
if (TimeScren!=iTime(NULL,TimeFrame,0))
{
TimeScren=iTime(NULL,TimeFrame,0);
#ifdef __MQL4__
int TekHour = Hour();
int Minute = Minute();
int Seconds = Seconds();
#endif
#ifdef __MQL5__
MqlDateTime tm;
TimeCurrent(tm);
int TekHour = tm.hour;
int Minute = tm.min;
int Seconds = tm.sec;
#endif
string ScreenShotName="Screen"+"//"+TimeToString(TimeCurrent(),TIME_DATE)+(TekHour<10?"0":"")+IntegerToString(TekHour)+"-"+(Minute<10?"0":"")+IntegerToString(Minute)+"-"+(Seconds<10?"0":"")+IntegerToString(Seconds)+".gif";
int WIDTH=(int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS);
int HEIGHT=(int)ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS);
ChartScreenShot(0,ScreenShotName,WIDTH,HEIGHT,ALIGN_RIGHT);
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
input double Mn = 1;
//+------------------------------------------------------------------+
//| Position Volume |
//+------------------------------------------------------------------+
double Lots()
{
double lots=NormalizeDouble(AccountInfoDouble(ACCOUNT_MARGIN_FREE)/100000*Mn,2);
return(lots);
}
//+------------------------------------------------------------------+
if(BuySell==0)
{
if(CountTrades()>0 && FindLastBuyPrice()-Ask>=Step*_Point) trade.Buy(lot,NULL,Ask,0,0,"");
if(CountTrades()>0 && Bid-FindLastSellPrice()>=Step*_Point) trade.Sell(lot,NULL,Bid,0,0,"");
}
тогда будет только подхватывать
input int BuySell = 0;
тогда будет только подхватывать
if(AllProfit()>Profit || AllProfit()<-Loss) {CloseAll(); lot=Lot;}
ssg