#include <iostream>
#include <cmath>
using namespace std;
int main( ) {
double capital, takeProfitPrice, percentPerTrade, maxLossPercent, entryPrice;
cout << "請輸入總本金:" ;
cin >> capital;
cout << "請輸入止盈價格:" ;
cin >> takeProfitPrice;
cout << "請輸入每筆交易使用本金的百分比(例如 5 表示 5%):" ;
cin >> percentPerTrade;
cout << "請輸入最大可接受的總虧損百分比(例如 20 表示 20%):" ;
cin >> maxLossPercent;
cout << "請輸入當前市價(開倉價格):" ;
cin >> entryPrice;
double positionSize = capital * ( percentPerTrade / 100.0 ) ;
double maxLossAmount = capital * ( maxLossPercent / 100.0 ) ;
double distance = abs ( takeProfitPrice - entryPrice) ;
double stopLossPrice;
if ( takeProfitPrice > entryPrice) {
stopLossPrice = entryPrice - distance;
} else {
stopLossPrice = entryPrice + distance;
}
double priceMove = abs ( entryPrice - stopLossPrice) ;
double lossPerUnit = priceMove;
double maxAllowedLossPerTrade = min( maxLossAmount, positionSize) ;
double maxLeverage = maxAllowedLossPerTrade / ( lossPerUnit) ;
double leverageRatio = maxLeverage / positionSize;
cout << "\n ========== 槓桿建議結果 ==========" << endl;
cout << "止損價格預估為:" << stopLossPrice << endl;
cout << "最大可用槓桿倍數為:約 " << leverageRatio << " 倍" << endl;
cout << "(保證在價格跌至止損價時,總虧損不超過最大可接受損失)" << endl;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGRvdWJsZSBjYXBpdGFsLCB0YWtlUHJvZml0UHJpY2UsIHBlcmNlbnRQZXJUcmFkZSwgbWF4TG9zc1BlcmNlbnQsIGVudHJ5UHJpY2U7CgogICAgY291dCA8PCAi6KuL6Ly45YWl57i95pys6YeR77yaIjsKICAgIGNpbiA+PiBjYXBpdGFsOwoKICAgIGNvdXQgPDwgIuiri+i8uOWFpeatouebiOWDueagvO+8miI7CiAgICBjaW4gPj4gdGFrZVByb2ZpdFByaWNlOwoKICAgIGNvdXQgPDwgIuiri+i8uOWFpeavj+ethuS6pOaYk+S9v+eUqOacrOmHkeeahOeZvuWIhuavlO+8iOS+i+WmgiA1IOihqOekuiA1Je+8ie+8miI7CiAgICBjaW4gPj4gcGVyY2VudFBlclRyYWRlOwoKICAgIGNvdXQgPDwgIuiri+i8uOWFpeacgOWkp+WPr+aOpeWPl+eahOe4veiZp+aQjeeZvuWIhuavlO+8iOS+i+WmgiAyMCDooajnpLogMjAl77yJ77yaIjsKICAgIGNpbiA+PiBtYXhMb3NzUGVyY2VudDsKCiAgICBjb3V0IDw8ICLoq4vovLjlhaXnlbbliY3luILlg7nvvIjplovlgInlg7nmoLzvvInvvJoiOwogICAgY2luID4+IGVudHJ5UHJpY2U7CgogICAgZG91YmxlIHBvc2l0aW9uU2l6ZSA9IGNhcGl0YWwgKiAocGVyY2VudFBlclRyYWRlIC8gMTAwLjApOwogICAgZG91YmxlIG1heExvc3NBbW91bnQgPSBjYXBpdGFsICogKG1heExvc3NQZXJjZW50IC8gMTAwLjApOwoKICAgIGRvdWJsZSBkaXN0YW5jZSA9IGFicyh0YWtlUHJvZml0UHJpY2UgLSBlbnRyeVByaWNlKTsKICAgIGRvdWJsZSBzdG9wTG9zc1ByaWNlOwoKICAgIGlmICh0YWtlUHJvZml0UHJpY2UgPiBlbnRyeVByaWNlKSB7CiAgICAgICAgc3RvcExvc3NQcmljZSA9IGVudHJ5UHJpY2UgLSBkaXN0YW5jZTsKICAgIH0gZWxzZSB7CiAgICAgICAgc3RvcExvc3NQcmljZSA9IGVudHJ5UHJpY2UgKyBkaXN0YW5jZTsKICAgIH0KCiAgICBkb3VibGUgcHJpY2VNb3ZlID0gYWJzKGVudHJ5UHJpY2UgLSBzdG9wTG9zc1ByaWNlKTsKICAgIGRvdWJsZSBsb3NzUGVyVW5pdCA9IHByaWNlTW92ZTsKCiAgICBkb3VibGUgbWF4QWxsb3dlZExvc3NQZXJUcmFkZSA9IG1pbihtYXhMb3NzQW1vdW50LCBwb3NpdGlvblNpemUpOwogICAgZG91YmxlIG1heExldmVyYWdlID0gbWF4QWxsb3dlZExvc3NQZXJUcmFkZSAvIChsb3NzUGVyVW5pdCk7CiAgICBkb3VibGUgbGV2ZXJhZ2VSYXRpbyA9IG1heExldmVyYWdlIC8gcG9zaXRpb25TaXplOwoKICAgIGNvdXQgPDwgIlxuPT09PT09PT09PSDmp5Pmob/lu7rorbDntZDmnpwgPT09PT09PT09PSIgPDwgZW5kbDsKICAgIGNvdXQgPDwgIuatouaQjeWDueagvOmgkOS8sOeCuu+8miIgPDwgc3RvcExvc3NQcmljZSA8PCBlbmRsOwogICAgY291dCA8PCAi5pyA5aSn5Y+v55So5qeT5qG/5YCN5pW454K677ya57SEICIgPDwgbGV2ZXJhZ2VSYXRpbyA8PCAiIOWAjSIgPDwgZW5kbDsKICAgIGNvdXQgPDwgIijkv53orYnlnKjlg7nmoLzot4zoh7PmraLmkI3lg7nmmYLvvIznuL3omafmkI3kuI3otoXpgY7mnIDlpKflj6/mjqXlj5fmkI3lpLEpIiA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9Cg==
stdin
LyogIEJlcmVjaG51bmcgZGVzIEhhbW1pbmctQWJzdGFuZGVzIHp3aXNjaGVuIHp3ZWkgMTI4LUJpdCBXZXJ0ZW4gaW4gCSovCi8qCWVpbmVyIFRleHRkYXRlaS4gCQkJCQkJCQkJCQkJCSovCi8qICBEaWUgV2VydGUgbSZ1dW1sO3NzZW4gYXVmIGVpbmVyIHNlcGFyYXRlbiBaZWlsZSBnZXNwZWljaGVydCBzZWluCQkJKi8KLyogCQkJCQkJCQkJCQkJCQkJCQkJKi8KLyoJRXJzdGVsbHQ6IDE3LjUuMjAxMAkJCQkJCQkJCQkJCQkqLwovKiAgQXV0b3I6IFRob21hcyBTY2hlZmZsZXIJCQkJCQkJCQkJCQkqLwoKI2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7CiNpbmNsdWRlICZsdDtzdGRsaWIuaCZndDsKCiNkZWZpbmUgQVJSQVlfU0laRSAzMgoKdW5zaWduZWQgSGFtZGlzdCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5KQp7CiAgdW5zaWduZWQgZGlzdCA9IDAsIHZhbCA9IHggXiB5OwogCiAgLy8gQ291bnQgdGhlIG51bWJlciBvZiBzZXQgYml0cwogIHdoaWxlKHZhbCkKICB7CiAgICArK2Rpc3Q7IAogICAgdmFsICZhbXA7PSB2YWwgLSAxOwogIH0KIAogIHJldHVybiBkaXN0Owp9CgoKCmludCBtYWluICh2b2lkKQp7CgljaGFyIGhleDsKCWludCBpOwoJaW50IGFbQVJSQVlfU0laRV07CglpbnQgYltBUlJBWV9TSVpFXTsKCWludCBoYW1EaXN0ID0gMDsKCUZJTEUqIGZwOwoJCgkvL0FycmF5cyBtaXQgMCBpbml0aWFsaXNpZXJlbgoJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkU7ICsraSkKCXsKICAJCWFbaV0gPSAwOwogIAkJYltpXSA9IDA7Cgl9CgoJCglmcCA9IGZvcGVuKCZxdW90O2hleC50eHQmcXVvdDssJnF1b3Q7ciZxdW90Oyk7CglpZiAoZnAgPT0gTlVMTCkgCgl7CgkJcHJpbnRmKCZxdW90O0RpZSBEYXRlaSBoZXgudHh0IHd1cmRlIG5pY2h0IGdlZnVuZGVuISZxdW90Oyk7CgkJZXhpdChFWElUX0ZBSUxVUkUpOwoJfQoKCWk9MDsKCXByaW50ZigmcXVvdDsxLlplaWxlIGVpbmxlc2VuLlxuJnF1b3Q7KTsKCiAJd2hpbGUoKGhleD1mZ2V0YyhmcCkpIT0nXG4nICZhbXA7JmFtcDsgaGV4ICE9IEVPRikKICAgIHsKICAgICAgICBhW2ldPXN0cnRvbCgmYW1wO2hleCwwLDE2KTsKCQlpKys7CiAgICB9CglpPTA7CglwcmludGYoJnF1b3Q7Mi5aZWlsZSBlaW5sZXNlbi5cbiZxdW90Oyk7CgogCXdoaWxlKChoZXg9ZmdldGMoZnApKSE9J1xuJyAmYW1wOyZhbXA7IGhleCAhPSBFT0YpCiAgICB7CiAgICAJYltpXT1zdHJ0b2woJmFtcDtoZXgsMCwxNik7CiAgICAgICAgaSsrOwogICAgfQoJZmNsb3NlKGZwKTsKCglwcmludGYoJnF1b3Q7SGFtbWluZy1BYndlaWNodW5nIHBybyBOaWJibGU6XG4mcXVvdDspOwoJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkU7ICsraSkKCXsKCQlwcmludGYgKCZxdW90OyVpXHQlaVx0JWlcbiZxdW90OyxhW2ldLGJbaV0sSGFtZGlzdChhW2ldLGJbaV0pKTsKCQloYW1EaXN0ICs9IEhhbWRpc3QoYVtpXSxiW2ldKTsKCX0KCXByaW50ZiAoJnF1b3Q7XG5IYW1taW5nLUFid2VpY2h1bmcgZGVyIEhhc2gtV2VydGU6JWRcbiZxdW90OyxoYW1EaXN0KTsKfQoK
/* Berechnung des Hamming-Abstandes zwischen zwei 128-Bit Werten in */
/* einer Textdatei. */
/* Die Werte müssen auf einer separaten Zeile gespeichert sein */
/* */
/* Erstellt: 17.5.2010 */
/* Autor: Thomas Scheffler */
#include <stdio.h>
#include <stdlib.h>
#define ARRAY_SIZE 32
unsigned Hamdist(unsigned x, unsigned y)
{
unsigned dist = 0, val = x ^ y;
// Count the number of set bits
while(val)
{
++dist;
val &= val - 1;
}
return dist;
}
int main (void)
{
char hex;
int i;
int a[ARRAY_SIZE];
int b[ARRAY_SIZE];
int hamDist = 0;
FILE* fp;
//Arrays mit 0 initialisieren
for (i = 0; i < ARRAY_SIZE; ++i)
{
a[i] = 0;
b[i] = 0;
}
fp = fopen("hex.txt","r");
if (fp == NULL)
{
printf("Die Datei hex.txt wurde nicht gefunden!");
exit(EXIT_FAILURE);
}
i=0;
printf("1.Zeile einlesen.\n");
while((hex=fgetc(fp))!='\n' && hex != EOF)
{
a[i]=strtol(&hex,0,16);
i++;
}
i=0;
printf("2.Zeile einlesen.\n");
while((hex=fgetc(fp))!='\n' && hex != EOF)
{
b[i]=strtol(&hex,0,16);
i++;
}
fclose(fp);
printf("Hamming-Abweichung pro Nibble:\n");
for (i = 0; i < ARRAY_SIZE; ++i)
{
printf ("%i\t%i\t%i\n",a[i],b[i],Hamdist(a[i],b[i]));
hamDist += Hamdist(a[i],b[i]);
}
printf ("\nHamming-Abweichung der Hash-Werte:%d\n",hamDist);
}