[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 697
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
L'angle de l'ancre est l'angle à partir duquel la position de l'objet dans la fenêtre sera comptée. Les angles sont comptés dans le sens des aiguilles d'une montre, de gauche à droite.
Si je m'accroche au coin inférieur droit, que dois-je faire, définir des coordonnées négatives ?
Si je clique sur le coin inférieur droit, dois-je définir des coordonnées négatives ?
Veuillez me conseiller,
Pour calculer le nombre d'événements continus (par exemple, le nombre de barres d'une série dans lesquelles la clôture est supérieure à l'ouverture et vice versa), je n'ai pu trouver que la formule suivante :
Deux questions (si ce qui précède a un sens) : (1) comment remettre à zéro la valeur du compteur si la série continue s'est arrêtée ; et (2) comment écrire correctement dans Buffer[i] - c'est-à-dire comment "voir" le résultat lui-même ?
Par exemple, si l'indicateur d'une certaine barre affiche "-3", cela signifie que c'est la troisième barre consécutive qui a clôturé en dessous de l'ouverture ; si la barre suivante clôture au-dessus de l'ouverture, l'indicateur affichera "1" .......
int i=Bars-1
while (i > 0) {
int x=0 ;
int y=0 ;
si ( Close[i] > Open[i] ) { x++ ;
Buf [i]= x ; }
if (Close[i] < Open[i] ) { y-- ;
Buf2[i] =y ; }
i-- ;
}
Non, des coordonnées positives, le terminal calculera lui-même le point souhaité. Par exemple : 15 pixels à partir de 2 coins
Montrez votre code, afin de ne pas deviner
Réalisé dans le programme Gorando, avec votre martin ajouté.
//+------------------------------------------------------------------+
//| Copyright 2005, Gordago Software Corp.
//| http://www.gordago.com/ |
//| version 2.0 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2005, Gordago Software Corp."
#lien de propriété "http://www.gordago.com"
#define MIN_STOPLOSS_POINT 10
#define MIN_TAKEPROFIT_POINT 10
#define MAGIC 218650
extern string sNameExpert = "Generate from Gordago" ;
extern int nAccount =0 ;
extern double dBuyStopLossPoint = 0 ;
extern double dSellStopLossPoint = 0 ;
extern double dBuyTakeProfitPoint = 0 ;
extern double dSellTakeProfitPoint = 0 ;
extern double dBuyTrailingStopPoint = 0 ;
extern double dSellTrailingStopPoint = 0 ;
extern double Lot = 0.10 ;
extern int nSlippage = 30 ;
extern bool lFlagUseHourTrade = True ;
extern inttern nFromHourTrade = 0 ;
extern intToHourTrade = 23 ;
extern bool lFlagUseSound = False ;
extern string sSoundFileName = "alert.wav" ;
extern color colorOpenBuy = Blue ;
extern colorCloseBuy = Aqua ;
extern colorOpenSell = Red ;
extern colorCloseSell = Aqua ;
void deinit() {
Commentaire (") ;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start(){
if (lFlagUseHourTrade){
if ( !(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment("Le temps du commerce n'est pas encore arrivé !") ;
retour(0) ;
}
}
if(Bars < 100){
Print("barres inférieures à 100") ;
retour(0) ;
}
if(nAccount > 0 && nAccount != AccountNumber()){
Comment("Transaction sur le compte : "+NuméroCompte()+" INTERDIT !") ;
retour(0) ;
}
if((dBuyStopLossPoint > 0 && dBuyStopLossPoint < MIN_STOPLOSS_POINT) ||
(dSellStopLossPoint > 0 && dSellStopLossPoint < MIN_STOPLOSS_POINT)){
Print("StopLoss inférieur à " + MIN_STOPLOSS_POINT) ;
retour(0) ;
}
if((dBuyTakeProfitPoint > 0 && dBuyTakeProfitPoint < MIN_TAKEPROFIT_POINT) ||
(dSellTakeProfitPoint > 0 && dSellTakeProfitPoint < MIN_TAKEPROFIT_POINT)){
Print("TakeProfit inférieur à " + MIN_TAKEPROFIT_POINT) ;
retour(0) ;
}
double diOpen0=iOpen(NULL,60,0) ;
double d1=(0.00030) ;
double diHigh2=iHigh(NULL,60,0) ;
double diOpen3=iOpen(NULL,60,0) ;
double d4=(0.00030) ;
double diLow5=iLow(NULL,60,0) ;
double diOpen6=iOpen(NULL,60,1) ;
double diClose7=iClose(NULL,60,1) ;
double diOpen8=iOpen(NULL,60,2) ;
double diClose9=iClose(NULL,60,2) ;
double diOpen10=iOpen(NULL,60,0) ;
double d11=(0.00030) ;
double diHigh12=iHigh(NULL,60,0) ;
double diOpen13=iOpen(NULL,60,0) ;
double d14=(0.00030) ;
double diLow15=iLow(NULL,60,0) ;
double diOpen16=iOpen(NULL,60,1) ;
double diClose17=iClose(NULL,60,1) ;
double diOpen18=iOpen(NULL,60,2) ;
double diClose19=iClose(NULL,60,2) ;
si(AccountFreeMargin() < (1000*Lot)){
Print("Nous n'avons pas d'argent. Marge libre = " + AccountFreeMargin()) ;
retour(0) ;
}
bool lFlagBuyOpen = false, lFlagSellOpen = false, lFlagBuyClose = false, lFlagSellClose = false ;
lFlagBuyOpen = (diOpen0+d1>diHigh2 && diOpen3-d4<diLow5 && diOpen6<diClose7 && diOpen8>diClose9) ;
lFlagSellOpen = (diOpen10+d11>diHigh12 && diOpen13-d14<diLow15 && diOpen16>diClose17 && diOpen18<diClose19) ;
lFlagBuyClose = False ;
lFlagSellClose = Faux ;
if (!ExistPositions()){
if (lFlagBuyOpen){
OpenBuy() ;
{ retour(0) ;
}
if (lFlagSellOpen){
OpenSell() ;
retour(0) ;
}
}
if(ExistPositions()){
if(OrderType()==OP_BUY){
if(lFlagBuyClose){
bool flagCloseBuy = OrderClose(OrderTicket(), OrderLots(), Bid, nSlippage, colorCloseBuy) ;
if (flagCloseBuy && lFlagUseSound)
PlaySound(sSoundFileName) ;
retour(0) ;
}
}
if(OrderType()==OP_SELL){
if(lFlagSellClose){
bool flagCloseSell = OrderClose(OrderTicket(), OrderLots(), Ask, nSlippage, colorCloseSell) ;
si (flagCloseSell && lFlagUseSound)
PlaySound(sSoundFileName) ;
retour(0) ;
}
}
}
si (dBuyTrailingStopPoint > 0 || dSellTrailingStopPoint > 0){
for (int i=0 ; i<OrdersTotal() ; i++) {
si (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
bool lMagic = true ;
si (MAGIC > 0 && OrderMagicNumber() != MAGIC)
lMagic = false ;
if (OrderSymbol()==Symbol() && lMagic) {
si (OrderType()==OP_BUY && dBuyTrailingStopPoint > 0) {
si (Bid-OrderOpenPrice() > dBuyTrailingStopPoint*Point) {
si (OrderStopLoss()<Bid-dBuyTrailingStopPoint*Point)
Modifier le StopLoss (Bid-dBuyTrailingStopPoint*Point) ;
}
}
si (OrderType()==OP_SELL) {
si (OrderOpenPrice()-Ask>dSellTrailingStopPoint*Point) {
si (OrderStopLoss()>Ask+dSellTrailingStopPoint*Point || OrderStopLoss()==0)
ModifierStopLoss(Ask+dSellTrailingStopPoint*Point) ;
}
}
}
}
}
}
retour (0) ;
}
bool ExistPositions() {
for (int i=0 ; i<OrdersTotal() ; i++) {
si (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
bool lMagic = true ;
si (MAGIC > 0 && OrderMagicNumber() != MAGIC)
lMagic = false ;
if (OrderSymbol()==Symbol() && lMagic) {
retour(Vrai) ;
}
}
}
retour (faux) ;
}
void ModifyStopLoss(double ldStopLoss) {
bool lFlagModify = OrderModify(OrderTicket(), OrderOpenPrice(), ldStopLoss, OrderTakeProfit(), 0, CLR_NONE) ;
if (lFlagModify && lFlagUseSound)
PlaySound(sSoundFileName) ;
}
//+----------------------------------------------------------------------------+
//| Auteur : Kim Igor V. alias KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Version : 19.02.2008 |
//| Description : Retourne l'indicateur de perte de la dernière position.
//+----------------------------------------------------------------------------+
//| Paramètres : |
//| sy - nom de l'instrument (" - n'importe quel symbole, |
//| NULL - symbole actuel) |
| //| op - opération (-1 - toute position) |
//| mn - MagicNumber (-1 - n'importe quel magik) |
//+----------------------------------------------------------------------------+
bool isLossLastPos(string sy="", int op=-1, int mn=-1) {
date t ;
int i, j=-1, k=OrdersHistoryTotal() ;
si (sy=="0") sy=Symbole() ;
for (i=0 ; i<k ; i++) {
si (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
si (OrderSymbol()==sy || sy==") {
si (OrderType()==OP_BUY || OrderType()==OP_SELL) {
si (op<0 || OrderType()==op) {
si (mn<0 || OrderMagicNumber()==mn) {
si (t<OrderCloseTime()) {
t=OrderCloseTime() ;
j=i ;
}
}
}
}
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
si (OrderProfit()<0) return(True)
}
retourner(Faux) ;
}
void OpenBuy(){
double dStopLoss = 0, dTakeProfit = 0 ;
double Lots_New = Lot ;
si (isLossLastPos(NULL, -1, MAGIC))
Lots_Nouveaux *= 2 ;
sinon si (!isLossLastPos(NULL, -1, MAGIC))
Lots_Nouveau = Lot ;
si (dBuyStopLossPoint > 0)
dStopLoss = Bid-dBuyStopLossPoint*Point ;
si (dBuyTakeProfitPoint > 0)
dTakeProfit = Bid + dBuyTakeProfitPoint * Point ;
int numorder = OrderSend(Symbol(), OP_BUY, Lots_New, Ask, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenBuy) ;
si (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName) ;
}
void OpenSell() {
double dStopLoss = 0, dTakeProfit = 0 ;
double Lots_New = Lot ;
si (isLossLastPos(NULL, -1, MAGIC))
Lots_Nouveaux *= 2 ;
sinon si (!isLossLastPos(NULL, -1, MAGIC))
Lots_Nouveau = Lot ;
si (dSellStopLossPoint > 0)
dStopLoss = Ask+dSellStopLossPoint*Point ;
si (dSellTakeProfitPoint > 0)
dTakeProfit = Ask-dSellTakeProfitPoint*Point ;
int numorder = OrderSend(Symbol(),OP_SELL, Lots_New, Bid, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenSell) ;
si (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName) ;
}
Si vous voulez bien corriger l'exemple, il ne fonctionne pas pour moi pour une raison quelconque.
J'ai rendu le coin variable externe (pour plus de commodité). Il contient le numéro de l'angle à partir duquel les coordonnées seront calculées.
Essayez de le remplacer par
si (OrderStopLoss()<pp-(TStop.Buy+TrailingStep-1)*po||OrderStopLoss()==0)
à
si (OrderStopLoss()>pp-(TStop.Buy+TrailingStep-1)*po||OrderStopLoss()==0)
J'ai rendu la variable d'angle externe (pour des raisons de commodité). Il contient le numéro de l'angle à partir duquel les coordonnées seront calculées.
Merci !
Une dernière question. Comment insérer correctement le symbole de Wingdings dans les commentaires.
quel symbole ?
copyright