[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 594

 

일반적으로 나는 확률 이론을 거쳤고 통계에 따르면 보류 중인 주문이 가격에서 반경 50포인트 이내에 있으면 10포인트의 이익으로 주문을 열 때 도달하기가 더 쉽습니다. 또한 10포인트의 손절매(스프레드도 방해가 되지 않음)이며, 추세의 움직임은 대단한 것입니다...

StepStop에 관계없이 손절매 추가

//+----------------------------------------------- --------------------+
//| Volfram.mq4 |
//| Vova-x@list.ru |
//| |
//+----------------------------------------------- --------------------+
#재산권 저작권 "Vova-x@list.ru"
#속성 링크 ""
//-----------------------------------------
외부 정수 TakeProfit=10;
extern int StepStop=45;
extern 이중 랏=0.01;
extern bool MoneyManagement=true;
extern int MarginPercent=10;
//------------------------------------------------------------
int level_sell_stop;
int level_buy_stop;

//------------------------------------------------ ----------
무효 초기화()
{
// int minstop=MarketInfo(Symbol(),MODE_STOPLEVEL);
//Print("정지 레벨: "+minstop);
}
//------------------------------------------------ -----------
무효 시작()
{
if (!IsTradeAllowed()) 반환;
level_buy_stop=0;
level_sell_stop=0;
스테핑스톱();
스테핑 보류();
if (TotalBuy()==0 && TotalBuyStop()==0) SetBuyStop();
if (TotalSell()==0 && TotalSellStop()==0) SetSellStop();
Comment("Level Buy Stop=",level_buy_stop*포인트,
"\n","레벨 판매 중지=",level_sell_stop*포인트);
}
//------------------------------------------------ -------------------------------------------------- --
voidSteppingStop()
{
if (StepStop<1) 반환;
int 물음, 입찰, 열기, 중지, x;
이중 손실;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 중단;
if (OrderSymbol()!=Symbol())
if (OrderType()==OP_BUY)
{
입찰가=MathRound(입찰가/포인트);
open=MathRound(OrderOpenPrice()/포인트);
stop=MathRound(OrderStopLoss()/포인트);
x=(입찰 공개)/StepStop; 엑스--; x*=단계 정지;
level_sell_stop=개방+x;
if (중지>=열기+x)
loss=(open+x)*포인트;
OrderModify(OrderTicket(),OrderOpenPrice(),손실,OrderTakeProfit(),0,CLR_NONE);
}
if (주문 유형()==OP_SELL)
{
Ask=MathRound(질문/점);
open=MathRound(OrderOpenPrice()/포인트);
stop=MathRound(OrderStopLoss()/포인트);
x=(열기 요청)/StepStop; 엑스--; x*=단계 정지;
level_buy_stop=오픈-x;
if (stop>0 && stop<=open-x)
loss=(open-x)*포인트;
OrderModify(OrderTicket(),OrderOpenPrice(),손실,OrderTakeProfit(),0,CLR_NONE);
}
}
}
//------------------------------------------------ --------------------------
무효 SteppingPendings()
{
int 물음, 입찰, 열기;
이중 가격, 손실, 이익;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 중단;
if (OrderSymbol()!=Symbol())
if (OrderType()==OP_BUYSTOP)
{
if (level_buy_stop==0)
open=MathRound(OrderOpenPrice()/포인트);
if (open<=level_buy_stop)
price=level_buy_stop*포인트;
loss=price-StepStop*Point;
이익=0; if (TakeProfit>0) 이익 = 가격 + TakeProfit * 포인트;
OrderModify(OrderTicket(), 가격, 손실, 이익, 0, CLR_NONE);
}
if (OrderType()==OP_SELLSTOP)
{
if (level_sell_stop==0)
open=MathRound(OrderOpenPrice()/포인트);
if (open>=level_sell_stop)
price=level_sell_stop*포인트;
손실=가격+스텝스톱*포인트;
이익=0; if (TakeProfit>0) 이익=price-TakeProfit*Point;
OrderModify(OrderTicket(), 가격, 손실, 이익, 0, CLR_NONE);
}
}
}
//------------------------------------------------ --------------------
무효 SetBuyStop()
{
더블 랏=LotsCounting();
이중 가격=입찰가+스텝스톱*포인트;
이중 손실=가격-StepStop*포인트;
이중 이익 = 0; if (TakeProfit>0) 이익 = 가격 + TakeProfit * 포인트;
int ticket=OrderSend(Symbol(),OP_BUYSTOP,랏,가격,0,손실,이익,"",0,0,CLR_NONE);
if (ticket<1) Print("대기 주문 설정이 오류 번호로 실패했습니다.",GetLastError()," ",(GetLastError()));
}

무효 SetSellStop()
{
더블 랏=LotsCounting();
이중 가격=Ask-StepStop*Point;
이중 손실=가격+스텝스톱*포인트;
이중 이익 = 0; if (TakeProfit>0) 이익=price-TakeProfit*Point;
int ticket=OrderSend(Symbol(),OP_SELLSTOP,랏,가격,0,손실,이익,"",0,0,CLR_NONE);
if (ticket<1) Print("대기 주문 설정이 오류 번호로 실패했습니다.",GetLastError()," ",(GetLastError()));
}


int TotalBuy()
{
정수 수 = 0;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 중단;
if (OrderSymbol()!=Symbol()) 계속
if (OrderType()==OP_BUY) count++;
}
리턴(카운트);
}

int TotalBuyStop()
{
정수 수 = 0;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 중단;
if (OrderSymbol()!=Symbol()) 계속
if (OrderType()==OP_BUYSTOP) count++;
}
반환(카운트);
}

정수 TotalSell()
{
정수 수 = 0;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 중단;
if (OrderSymbol()!=Symbol()) 계속
if (OrderType()==OP_SELL) count++;
}
반환(카운트);
}

int TotalSellStop()
{
정수 수 = 0;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 중단;
if (OrderSymbol()!=Symbol()) 계속
if (OrderType()==OP_SELLSTOP) count++;
}
반환(카운트);
}

이중 LotCounting()
{
이중 로트 = 로트;
if (머니 매니지먼트)
{
이중 lotsize=MarketInfo(Symbol(),MODE_LOTSIZE);
이중 freemargin=AccountFreeMargin();
로트=0; if (lotsize>0) lot=NormalizeDouble((MarginPercent*freemargin/lotsize),1);
}
if (lots>10) lot=NormalizeDouble(lots,0);
if (lots<0.01) lots=0.01;
반환(많은);
}


// 끝

 
drknn :

그들은 대답하지 않았습니다. 아마도 그러한 지표를 작성하는 것이 간단하고 아무도 필요하지 않기 때문일 것입니다.
고맙지만 어쨌든? 또는 터미널 설정 에서 전체 시간 척도에 따라 시간 표시를 더 명확하게 표시할 수 있습니까?
 

여러분, 도와주세요! 열린 트랜잭션의 최대 가능한 볼륨을 계산할 수 없습니다

 // Расчет максимального объема
   for ( double m = 0.1 ; AccountFreeMarginCheck( Symbol (),OP_SELL,m)> 30 ; m = m + 0.1 )
      {
       Max_lots   = m;
       double Ost = AccountFreeMarginCheck( Symbol (),OP_SELL,m);
      }

Max_lots는 항상 0입니다!


그리고 두 번째 질문, LEVEL은 어떻게 계산되나요?


 
root :
고마워, 하지만 어쨌든? 아니면 터미널 설정에서 전체 시간 범위에 걸쳐 시간 표시를 더 명확하게 표시할 수 있는 기회가 있습니까?
나는 이 지표가 없다는 것이 Forex에서 돈을 버는 것을 막는 마지막 것임을 깨달았습니다. 정확히 그런 것은 없지만 Urain 에는 8줄로 비슷한 것이 있습니다. 그것을 리메이크하지만 작가에게 연락 할 수는 없습니다. 그는 포럼에 있습니다.
파일:
time_line.mq4  2 kb
 

단순 부피는 다음과 같이 계산할 수 있습니다.

 /* вычитаем средства обозначенные на стопаут c учетом процента риска */
   curBalance = AccountFreeMargin() * ( 1 - AccountStopoutLevel() / 100 .) * percent; // percent - от 0 до 100
/* множитель (1 или 10) зависит от четырех-пятизначности  */
   koeff = iif(DIGITS == 3 || DIGITS == 5 , 10 , 1 );
/* расчет рабочего лота, нормализация */
   lot = NL(curBalance / (koeff * lossPoint * TICKVALUE + MARGINREQUIRED)); //lossPoint - количество пунктов потерь
   if (lot < MINLOT)    lot = 0 ;
   if (lot > MAXLOT)    lot = MAXLOT;

/* DIGITS,MINLOT,MAXLOT,TICKVALUE,MARGINREQUIRED получаем из Marketinfo() */


및 수준 = AccountEquity() / AccountFreeMargin() * 100;

 
keekkenen :



및 수준 = AccountEquity() / AccountFreeMargin() * 100;

잘못된. 이 공식으로는 레벨이 작동하지 않습니다.
 
Noterday :
잘못된. 이 공식으로는 레벨이 작동하지 않습니다.

예, 실수를 했습니다. level = AccountEquity() / AccountMargin () * 100;

 
keekkenen :

예, 실수를 했습니다. level = AccountEquity() / AccountMargin () * 100;

감사해요 :)
 
안녕하세요. 놈들이 한 헛소리를 도와줍니다. 이런거 들어본적도 없는데 가지고 계신분 계신가요? 아이디어는 한 그래프에서 다른 그래프로 선택한 모든 개체를 전송하는 것입니다. 저것들. 하나의 계측기의 모든 시간에서 하나의 창으로 웨이브 카운팅을 전송해야 한다고 가정해 보겠습니다. 많은 계산으로 인해 시간을 다시 전환하여 마크업을 만들기가 어렵습니다(M1에서 30-50 추세를 계산하면 터미널이 범위를 벗어납니다. 이것은 차트의 약 16-24시간에 불과함). 차트에 있는 개체(이 경우 추세선 )를 복사하고 추세선의 전체 배열을 다른 창으로 후속 전송하는 스크립트를 가지고 있는 사람이 있습니까? 아니면 하나의 창에서 여러 템플릿을 결합할 가능성이 있습니까?
 

홍수로 인해 죄송하지만 오늘은 가능합니다.

=====

의미 없는 높이로 흔들리고

여기에서 날아온 몇 가지 문구 ...

============

안드레이 보즈네센스키.